二足のわらじ

〜プログラミングとSEOの勉強をはじめたミーハー26歳のメモ帳〜

【学習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(main):001:0> str = "Hello, World"
=> "Hello, World"

irb(main):002:0> md = str.match(/Hello/)
=> #<MatchData "Hello">

irb(main):003:0> c
=> "Hello"

 

 

 

【覚書】

irb ってなんだっけ?

Interactive Rubyの略で、対話的にプログラムを実行することができます。主にRubyのコードの動作を確認するために利用します。

 

irbを開始・・・ターミナルで `irb` と打つ

irbを終了・・・ターミナルで `exit` と打つ