【学習39日】リファクタリングとは??正規表現とは??【応用2日】
■リファクタリングとは?
→操作の内容は変えずに、
冗長なコード・わかりにくいコードは書き直すこと。
■リファクタリングのメリット
→一緒に開発する人の解読する手間・時間を最大限に省くため
→修正しやすい
■リファクタリングすべき部分(要素)
①制御フロー(if条件分岐、繰り返し処理など)
・条件式の書き方
→=左が変数、右が数値(比較対象となる具体的な数)
・if/elseの並び順は
→肯定文から
→単純なものから
→関心の高いものから
・ネストを浅くする(むやみにifの中にifを入れない)
②式の分割
・説明変数を使おう
下記の場合、is_nicknameが説明変数
is_nickname = currnent_user.nickname.nil? if is_nickname #処理 end
③変数
・極力不要な変数は削る
・変数のスコープをできるだけ小さくする
・再代入ばかりしない。使うのは1度だけ。
④メソッドの抽象化
定義したメソッド(関数)の目的を明確にし
役割が若干異なるようなものは別関数として設定。
目的ごとに小さく設定しておくことで分かりやすくなり
他への応用もやりやすくなる。
⑤関心の分離(機能ごとに区切る)
⑥短いコードを書く
・重複コードは削除
・未使用コード・機能は削除
・最も簡単なものを!
・定期的にAPIを読んで、標準ライブラリに慣れる
■正規表現とは??
・ 閲覧者にパスワードなどを入力させる際に、
必要な情報が入力されているか確認をしたり、
余計な情報を省いたりすること。
「電話番号はハイフンなしで入力してください」
「半角英数字で入力してください」
・どの言語でもだいたい同じような記述になる
■正規表現を使う3つのケース
・置換(例)ハイフンを空文字に
・調査(例)8文字以上
・抽出(例)アドレスのドメインのみ取得
■正規表現を実現する2つのメソッド
「置換」の subメソッド
主語.sub( / 検索する文字列 / , " 置き換える文字列 " )
irb(main):001:0> str = "りんごを食べる" => "りんごを食べる" irb(main):002:0> str.sub(/りんご/,"みかん") => "みかんを食べる"
チカンのさぶ "" と // の使い分けに注意!
「含まれているか?」の matchメソッド
主語.match( / 検索する文字列 / )
irb(main):001:0> str = "Hello, World" => "Hello, World" irb(main):002:0> str.match(/Hello/) => #<MatchData "Hello"> irb(main):003:0> str.match(/Good/) => nil
matchの結果は、MatchDataオブジェクトで帰ってくる。 #<MatchData "Hello">
その値を取り出す時には、まず変数にMatchDataオブジェクトの値を格納し、配列からだすように指示する。 md[0]
【覚書】
・irb ってなんだっけ?
Interactive Rubyの略で、対話的にプログラムを実行することができます。主にRubyのコードの動作を確認するために利用します。
irbを終了・・・ターミナルで `exit` と打つ