#はじめに
本記事は、リーダブルコード(著:DustionBoswell,TrevorFoucher)を筆者なりに簡単にまとめたものです。丸コピなどはしてません。
#名前に情報を詰め込む
名前を見ただけで、その変数や定数の情報が読み取れるようにする。
- 明確な単語を選ぶ。例えばGetではなく、場合によってはFetchやDownloadが好ましい。
- tmpなどの汎用的な名前は、特段の理由がなければ使用しない。
- 具体的な名前を使って、物事の詳細を説明する。(ex.CanListenOnPort())
- 変数名に大切な情報を追加する。例えば、_msとして単位を明らかにする
- スコープの大きい変数には長い名前をつける。
- 大文字やアンダースコアに意味を含める。
#美しい一貫性のあるコードの整形をする
- 複数のコードブロックで同じようなことをしていたら、シルエットも同じようにする。(改行位置などは特に意識すること)
- コードの列を整列して、概要を把握しやすくする。
- 並び順は必ず一貫性を持たせる。(一方でA,B,Cとなっていて、他ではC、B、AはNG)
- 空行を使って大きなブロックを論理的な段落とする。
#コメントすべきことを知る
- コードを読んだ人が「ん?どういうこと」と思うところを予想してコメントする。
- 読み手が驚くような動作は文書化
- ファイルやクラスには全体像を描いておく
- 読み手が細部にとらわれないように、コードブロックにコメントをつけて概要をまとめる
#コメントは正確に簡潔に
小さな領域にできる限り詳細な情報を詰め込むためのコメントの記述の仕方についてまとめる。
- 複数のものを指す可能性がある場合は、「それ」や「これ」などの代名詞を避ける。
- 関数の動作はできるだけ正確に説明し、コメントに入出力例を記述する。
- コードの意図は詳細レベルではなく、高レベルで記述する。
- よくわからない引数にはインラインコメントを使う。
- 多くの意味が込められた言葉や表現を使って、コメントを簡潔に保つ。
#制御フローを読みやすくする
- 比較を書くときは変化する値を左に、安定的な値を右に配置する
- if/else文のブロックは定説に並び替え、一般的には肯定形や単純なもの、目立つものから処理しておく。
- 三項演算子やdo/whileループなどのプログラミング構成要素を使うとコードが読みにくくなることがあるので気を付ける。
- ネストが深いと読みづらいので、早めに返したり、ネストを削除するように努める。
#巨大な式を分割する
巨大な式の取り扱いについてまとめる。
- 説明変数を導入することで、式の分割をし、簡潔な名前で式を説明することができる。また、コードの主要な概念を読み手が意識しやすくなる。
- ド・モルガンの法則を使って、論理式を読みやすい形に書き直す。
#変数と読みやすさについて
変数が増えるとコードは読みにくくなる。変数をできるだけ減らして、できるだけ軽量にすればコードは読みやすくなる。
- 邪魔な変数は削除する。例えば、中間結果の変数は削除する。
- 変数のスコープをできる限り小さくする。
- 一度だけ書き込む変数を使う。
#その他
- プロジェクト固有のコードから汎用コードを分離することで、無関係の下位問題を抽出する。
- 一度に1つのタスクを行うという考え方を意識して、各タスク分割する。
- おばあちゃんに説明して理解してもらえるレベルまで言語化する。プログラム内のタスクを簡単な言葉で列挙してみる。
- 最も簡単に課題が解決できる方法を考える。