リーダブルコード 要点まとめ
リーダブルコード(オライリー社)を読んで感銘を受けたので,メモを残します。この記事を読んで面白そうだなと思ったあなた。ぜひ書籍を読んで良いコードを増やす人になってくださいよろしくお願いします。
この内容を実践することで,
- メンテナンスしやすいコードになる
- 理解しやすいので新入りでもすぐコードの意図が理解できる
- ドキュメントを見ないと何やっているかわからないコードになることを防ぐ
- 実装の詳細ではなく高レベルの問題を意識できるようになる
などの恩恵を受けることができます。
1. 名前に情報を詰め込む
名前をみただけで情報を読み取れるようにする。
- 明確な単語 ー 例)❌ Get
,✅ Fetch
,Download
汎用的な名前ダメ ー 例)❌
tmp
,retval
など,具体的な名前で,詳細に説明 ー 例)❌
ServerStart()
✅ListenOnPort()
変数名に情報を追加する ー 変数名に単位
_ms
をつけるなどスコープの大きな変数に長い名前 をつける
大文字やアンダースコアに意味を含める ー 例)クラスのメンバ変数にだけアンダースコアをつける
2. 誤解されない名前
boolean 変数 には
is
,has
をつける否定形の変数名を避ける
get()
,size()
は軽量であることが一般に期待される(重い処理を行わない)
3. 美しさ
シルエットを揃える ー 複数のコードブロックで同じことをしていたらね
コードの列を揃える ー 概要を把握しやすくなる
規則性を持たせる ー ある場所で「A・B・C」と並んでいたら,他のところで「B・A・C」にしたりしない
コード全体を分割 ー 空行を使って意味的な段落に分ける
4. コメントすべきこと
記録すべき自分の考え ー
なぜコードが他のやり方ではなく,こうなっているのか
コードの欠陥を
TODO:
XXX:
FIXME:
などの記法で強調する定数の値にまつわる背景
例)
python epoch_limit = 100 # この上限値は速度と性能の面でバランスが良い
読み手の立場になって考える ー
💡コメントの目的は,コードの意図を読み手に理解してもらうこと
読んだ人が「?」となるところを予想してコメントする
平均的な読み手が驚く動作は文書化しておく
ファイルやクラスには「全体像」のコメントを
コードブロックの先頭には概要コメントをつける
コメントすべきでないこと ー
コードからすぐにわかること
ひどいコードを補うコメントを書くのではなく,コードを修正する
5. コメントは正確で簡潔に
小さな領域に情報量の多いコメントを書くことが肝要。
❌「それ」「これ」
関数の動作は正確に記述
コメントに含める入出力の実例を吟味する
コードの意図は高レベルで記述
よくわからない引数にはインラインコメントをつける
パターンやイディオムについての 情報量の多い単語 を使う(例:ヒューリスティック,総当たり,キャッシュ など)
6. 制御フローを読みやすくする
条件分岐では,変化する値を左辺 にする
python if (100 > count) # ❌ if (count < 100): # ✅
if/else のブロックの並び替え。肯定形・単純・目立つ物 を先に する
三項演算子は読みやすくなる場合にだけ使う
ネストを深くしない。ガード節を使う。値を早めに返す。
7. 巨大な式を分割する
「説明変数」を追加 ```python # わかりづらい if line.split(':')[0] == 'root': ...処理...
# 分割するとわかりやすい↓ username = line.split(':')[0] if username == 'root': ...処理... ```
論理式を変形 ー by applying ド・モルガンの法則
9. 変数と読みやすさ
プログラムの変数はすぐ増えて,いずれ追跡が困難になる。変数を減らして軽量にする。
邪魔な変数の削除 ー 結果をすぐ使って,中間変数を削除
変数のスコープを小さくする ー 変数を数行のコードからしか見えない位置に移動。使う場所の近くで宣言。
一度だけ書き込む変数を使う ー 変数を宣言した後で書き換えない。
const
,final
で宣言してイミュータブル(不変)にする。
10. 無関係の下位問題を抽出する
詳細すぎる下位問題を関数にまとめて分離 ー 読みやすく,かつ変更を加えやすくなる
汎用コードは積極的にユーティリティ化する
メソッド内部の処理は同じ抽象度のレベルになるようにする
11. 一度に1つのことを
コードを構成する際に,一度に複数のことをしない
リファクタリングするときは,一度コード全体をタスクで分割する
12. コードに思いを込める
コーディングの理想的な手順
- コードの動作を簡単な言葉で同僚にもわかるように説明する
- その説明のなかで使っているキーワードやフレーズに注目する
- その説明に合わせてコードを書く
"おばあちゃんがわかるように説明できなければ,理解しているとは言えない"
ー アインシュタイン
13. 短いコードを書く
おわりに
いかがだったでしょうか。本書に書いてある内容はコーディングだけでなく,文書作成やプレゼンにおける 「読みやすさ」にも通ずるものがあると思います。
例えば,
「高レベルの内容についてコメントする」→「記事を書くときはまず概要を書く」
「似たような内容はシルエットを揃える」→「箇条書きするときは粒度を揃える」
対応しています。
実はこの記事でも,「情報量の多い単語を使う」→「絵文字を使ってスペースあたりの情報量を増やす」とかやってみてます。
ということで,みなさんも読んでみてください m(_ _)m