リーダブルコード各章のまとめ

リーダブルコード各章のまとめ

理解しやすいコード

もっと重要なポイントは、他の人が読んだとき最短時間で理解できるようにコードを書くこと

名前に情報を詰め込む

クラス名、定数、変数と自由に名前を決められるが、その名前に情報を詰め込むこと

  • 明確な単語を選ぶこと
  • tmpやreturnValueなどのあるあるな名前は避ける
  • 具体的な名前を使う
  • 変数名に単位など、大切な情報を追加する
  • スコープが大きな変数には、長い名前をつける
  • 大文字やアンダースコアなどに特別な意味を含める

誤解されない名前

ベストな変数名は、誰がみても誤解されない変数名。言い換えると記述者の意図を、名前から他の人が正しく理解できることが重要

例えば変数名をつけるときは必ず3つは考えるようにして、そのうちの一つを選ぶようにする

  • 限界値を決めるときはmax_やmin_を使う
  • 範囲の場合はfirstやlast、beginやend
  • ブール値の場合はisやhas
  • 変数名に否定語は避けると分かりやすくなる
  • get()やsize()などは、軽量なメソッドが期待されるので、重い処理は書かないなど

美しさ

段落を適宜分けたり、意味のまとまりで分けたり、インデントを揃えたりして、コードを読みやすいものにすることが大切

  • 複数のコードブロックで同じようなことをしていたら、インデントなどを使って全体のシルエットも同じようにする
  • コードの列を整列すると、概要が把握しやすくなる
  • ある場所でABCと並んでいたものを、他の場所でBACと並べないようにする。例えばアルファベット順、重要度順など、常にその順番を守る
  • 空行を使って大きなブロックを論理的に意味のある、分かりやすい段落に分ける

コメントすべきことを知る

コメントの目的は、コードの意図を素早く読み手に理解してもらうためのもの

  • コメントすべきでないこと
    • コードからすぐに抽出できること
    • よくないコードを補う補助的なコメント(この場合、よくないコードを修正した方が良い)
  • コメントすべきこと
    • なぜコードが他のやり方ではなくこうなっているかを記録する
    • コードで気になるポイントをTODOやHACKなどを使って表す
    • 定数を使用するときに、なぜその値にしたのかの背景やエピソード
    • コードを読んだ人が、「え?」ってなりそうなところにコメントをつける
    • 動作の流れが追いにくい部分は文書化してコメントする

コメントは正確で簡潔に

要するに、文字量はなるべく少なく、なるべくたくさんの情報を詰め込んだコメントがベスト

  • 複数のものを示す可能性がある、それ、あれ、といった代名詞は使用しない
  • 関数の動作は正確に説明する
  • コメントに関数の入出力の実例を載せる。実例は分かりやすいものを選択する
  • コードの意図は、詳細レベルではなく、概要レベルで記述する
  • よくわからない引数には、インラインコメントを使う
  • 多くの意味が詰め込まれた言葉や表現を使って、コメントを簡潔にする

制御フローを読みやすくする

例えばif文だったり、while文(for文)だったり、制御フローを読み手に対して分かりやすく書くのが大切

  • 比較するときは変化する値を左に、固定された値は右に書く
  • if/elseの条件分岐には、肯定系をなるべく使って、重要なものから先に処理する
  • 三項演算子は使いすぎるとコードが読みにくくなるので注意
  • ネストが深すぎると、読みにくくなるので、注意
  • はやめにリターンできるものは早期リターンする。ガード節を使う。

巨大な式を分割する

たくさんの行数が書かれた関数は、理解するのが難しくなるが、説明用の変数を使ってあげることで、コードを理解しやすくなる

  • 説明用の変数によるメリット
    • たくさんの行数の式を分割できる
    • 変数名を簡潔な名前にして、式の一つ一つを説明することでコードを文書化できる
    • コードの主要な概念を読み手が認識しやすくなる
  • ドモルガンの法則を使う

変数と読みやすさ

要するに変数は少ないに越したことはなく、できれば少なく済ませること

  • 中間結果のみを表示している変数を削除する
  • 変数のスコープをできるだけ小さくする。大きいスコープだと、追跡するのが大変
  • constなどの変数宣言のように、変数を使うときには値を変更できないものを利用する

無関係の下位問題を抽出する

簡単に言うと、コードの中で関数に分けられるところは、分けましょうと言うこと。

分けることで、よりコードが本質的なものになる

  • ヘルパー関数を作る。後から別のところでも汎用的に使える
  • 関数に分ける
  • ライブラリのメソッドを使う

一度に1つのことを

コードを書くときには、一度にひとつのタスクを処理するのを意識する。読みにくいコードは、複数のタスクを一度に処理しようとしていることが多い

  • 読みにくいコードを修正する方法
    • コードの中のタスクを列挙する
    • タスクを一つ一つ処理するコードを書く
    • タスクの処理を別のクラスや関数に分ける

コードに思いを込める

要するに、どんなコードをこれから書くのかを言葉で説明してから、実際にコードを書くと、理解しやすいコードを書けるというもの。結構馬鹿にできない

例えばプログラムを書くときには、先に日本語のコメントでどんな処理を書くのかを、記述してから、コードを書き始めるなど

  • 問題や設計をうまく説明できるか言葉で説明してみる
    • もしできないときは何かを見落としているか、詳細が明確になっていない
  • プログラムを言葉で説明できるようになって初めて、明確なコードが書けるようになる

短いコードを書く

文章も一緒だが、短い文章の方が理解しやすい。同じようにコードも短い方が理解しやすい。究極はコードを書かなくて済ますのがベスト。

  • コードを書くことで、技術的負債が増えることを理解しておく
  • 不要な機能は削除する。過剰な機能は持たせない
  • 定期的にライブラリや使用しているAPIに関するコードを読んで、内容を理解しておく

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA