リーダブルコード読書メモ ~その3~ 

hatek47320.hatenablog.com

これの続きです。今回は条件文をわかりやすくどうするか、あまりネストをできるだけ浅くしようという、話です。

  • 比較文の書き方
    • 左側に調査対象、右側に比較対象、とするとよい

Ruby hogeflag == true fuga < 10

  • 条件文

    • if文はなるべく肯定文を使う。elseで複雑になりがちだが「単純な条件、目立つ条件、関心を引く条件」をなるべく先頭に書く
    • 3項演算子は条件が単純(論理演算子が一つ以下くらいが個人的な目安です)な場合のみ利用可。それ以外はかえってわかりにくくなる。
      • 一方条件が単純な場合は可読性が向上するのがメリット
    • do~whileはできる限りwhileとする
      • do~whileは初回は時必ず実行され、最後の条件判定がある。条件判定が最初に合ったほうがわかりやすいのでwhileを使うこと
  • ネストは浅くする

    • 特に条件分岐が増えると結構つらい。深くなりそうな場合は既存ロジックも含めて以下を検討する
      • 失敗ケースは早く返す(ガード節をうまく使う)
      • continueを使う
    • ガード節について
      • 処理の対象外とするケースを関数やループの先頭に集めてreturnやcontinue、breakで抜けるコーディングテクニック
       if !hoge
          fuga = 0
       end
       if !hogehoge
          fuga = 0
       end

上記を以下のようにするとネストがなくなり、わかりやすくなる

       fuga = 0 if !hoge
       fuga = 0 if !hogehoge

終わりに

比較や条件文については要件によっては複雑になるのは仕方ないですが、今回紹介したような形でできる限りわかりやすく書くことを意識したいですね。。。