はじめに#
『リーダブルコード』で紹介されている、読みやすいコードを書くための考え方をまとめます。
1. 理解しやすいコード#
- 良いコードとは、他の人が最短時間で理解できるコードである
- コードの行数よりも、理解にかかる時間を重視する
2. 名前に情報を詰め込む#
- 明確な単語を選ぶ:
Getよりも、動作が伝わるFetchやDownloadを使う - 汎用的な名前を避ける:ただし、値を一時的に入れ替える
tmpなど、役割が明らかな場合はよい - 具体的に表現する:何を表す値なのか、名前だけで分かるようにする
- 大切な情報を加える:ミリ秒なら
start_msのように、単位や属性を名前に含める - スコープに合わせて長さを変える:短い名前は、小さなスコープだけで使う
- 表記に意味を持たせる:大文字やアンダースコアの使い方を統一する
3. 誤解されない名前#
- 上限・下限には
max_・min_を付ける - 両端を含む範囲には
first・last、終端を含まない範囲にはbegin・endを使う - 真偽値には
is・hasなどを使う
4. 美しさ#
- インデントをそろえる
- 対応する要素は、どこでも同じ順番に並べる
- 大きなコードの塊は、空行を使って意味のある段落に分ける
5. コメントすべきことを知る#
コメントしないこと
- コードを読めばすぐに分かること
- 分かりにくいコードの説明。コメントを足す前にコードを直す
コメントすること
- その手法を選んだ理由
- TODOや既知の問題
- 定数の値を決めた背景
- ファイル、クラス、コードブロックの概要
6. コメントは正確で簡潔に#
- 「これ」「それ」などの代名詞を避ける
- コードの意図を、正確かつ簡潔に書く
7. 制御フローを読みやすくする#
- 比較では、変化する値を左、安定した値を右に置く
if/elseでは、肯定形・単純・目立つ条件を先に扱う- 読みにくくなる三項演算子、
do/while、gotoは避ける - 早期リターンを使ってネストを浅くする
8. 巨大な式を分割する#
説明変数を使って、巨大な式やコードブロックを意味のある単位に分ける。
9. 変数と読みやすさ#
- 複雑な式の分割、意味の明確化、重複の削除に役立たない変数は消す
- 変数のスコープを小さくする
- できるだけイミュータブルな変数を使う
10. 無関係の下位問題を抽出する#
- プロジェクト固有の処理から、汎用的な処理を分離する
- ただし、細かい関数が増えすぎても読みにくい。再利用の必要性が見えてから切り出す
11. 一度に1つのことを#
- 1つのコードブロックでは、1つのタスクだけを扱う
- 複数の処理が混ざっている場合は、タスクを列挙して別々の処理に分ける
12. コードに思いを込める#
複雑な考えも、まず簡単な言葉で説明する。細部を詰め込みすぎると、かえって意図が伝わらない。
コードを明確にする手順は次のとおりです。
- コードの動作を、同僚にも伝わる簡単な言葉で説明する
- 説明に使ったキーワードやフレーズに注目する
- その説明に合わせてコードを書く
13. 短いコードを書く#
コードが増えるほど、保守や開発は難しくなる。新しいコードを増やさないためには、次の点を意識する。
- 不要な機能を削除し、過剰な機能を持たせない
- 最も簡単に問題を解決できる要件を考える
- APIや標準ライブラリを知り、既存の機能を活用する
14. テストと読みやすさ#
- 失敗の原因がすぐ分かるエラーメッセージを書く
- テストしやすいコードを意識すると、責務が整理された読みやすいコードになる
