「リーダブルコード」要点まとめ
こんにちは、技術部の K です。今回は書籍『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)】の要点をまとめました。
明確な単語を選ぶ
変数名や関数名には明確な単語を選ぶことで、他人が読んでも理解できるようにする。
単語 | 代替案 | ||||||
---|---|---|---|---|---|---|---|
send | deliver | dispatch | announce | distribute | route | ||
find | search | extract | locate | recover | |||
start | launch | create | begin | open | |||
make | create | set up | build | generate | compose | add | new |
tmp や retval などの汎用的な名前を避ける
汎用的な名前は可読性を低下させる。
- retval → 意味がないので避ける
- tmp → 生存期間が短く、一時的な保管がもっとも大切な変数につける場合がある。
名前に情報を追加する
値の単位を追加する
- delay → delay_secs
- size → size_mb
- limit → max_kbps
- angle → degree_cw
その他の重要な属性を追加する
状況 | 変数名 | 改善後 |
---|---|---|
password はプレインテキストなので、処理する前に暗号化するべきである | password | plaintext_password |
ユーザが入力した comment は表示する前にエスケープする必要がある | comment | unescaped_comment |
html の文字コードを UTF-8 に変えた | html | html_utf8 |
入力された data を URL エンコードした。 | data | data_urlenc |
コメント
- コードからすぐに分かることはコメントしない。
- コードから推測しづらい場合はコメントする。
- 簡潔に短く、密度の高いコメントをする。
- 関数の動作をコメントをする場合は、入出力の実例があるといい。
- コメントを書けば読み手の理解が速くなるなら書いた方がいい。
コードの欠陥にはコメントをつける
記法 | 典型的な意味 |
---|---|
TODO: | あとで手をつける |
FIXME: | 既知の不具合があるコード |
HACK: | あまり綺麗じゃない解決策 |
XXX: | 危険!大きな問題がある |
読み手を意識する!
制御フロー
if 文
条件式の並び順
左側 | 右側 |
---|---|
「調査対象」の式。変化する | 「比較対象」の式。あんまり変化しない |
- 条件は否定系よりも肯定系を使う。
- 単純な条件を先に書く。
- 三項演算子はコードが短い場合は使用してもいい。
return で関数を早く返すことはいい。
- ガード節:処理の対象外とする条件を、関数やループの先頭に集めて return や continue/break で抜ける方法。ネストを減らし正常系の処理が分かりやすい。
do while
do while は使用を避ける。処理が分かりづらいため。
- continue など使うと分かりづらい。
- 大体、while に置き換えられる。
巨大な式は分割する
- 関数のコード量が多い場合は分割する。
- 式を変数に格納することで読みやすくする(注意:意味がないならやらない)。
- 不要な変数は削除する。
- 変数のスコープはできるだけ小さくする。
- 変数は使用する箇所で定義すると読みやすい。ブロックの一番上にまとめると全て使用するのかと混乱する。
- 関数名と無関係な処理は分割する。
汎用コードを作る
- 汎用的に使用できる処理はできるだけ作る。
- util などのディレクトリ名で共有できるように管理する。
- インターフェースを作成する。
コーディングのコツ
- まずは言葉で説明してみる
- キーワードやロジックを整理する
- ライブラリが使用できないか考える
- 最も簡単に問題を解決できるような要求を考える。
- 標準ライブラリを普段から触り役立ちそうな API を知る。
関連記事
- 2023-11-24
- テクノロジー