リーダブルコード読んだメモ
名前に情報を詰め込む
汎用的な単語ではなく,明確な単語を使う.
単語 代替案 get fetch, download size Height, NumNodes, MemoryBytes stop kill, pause send deliver, dispatch, announce, distribute, route find search, extract, locate, recover start lainch, create, begin, open make create, set up, build, generate, compose, add, new 抽象的な名前ではなく,具体的な名前
- tmpは生存期間が短く,一時的な保管が最も大切な変数のみに使う.
- イテレータは安易にi, j, kとするのではなく,club_i,member_i,user_iのように名付ける.
- より直接的で,明確な表現にする.
ServerCanStart → CanListenOnPort
接尾辞,接頭辞で情報を追加する.
delay → delay_secs size → size_mb limit → max_kbp angle → degree_cw html → html_utf8
名前の長さを決める.
FormatString → FormatStr ConvertToString → ToString
名前のフォーマットで情報を伝える.
- 大文字やアンダースコアなどに意味を含める.
誤解されない名前を使う
- 多義語に気をつける.
filter → select, exclude clip → remove, truncate
- 限界値を含めるときは,minとmaxを使う.
- 範囲を指定するときは,firstとlastを使う.
- 包含/排他的範囲には,beginとendを使う.
- ブール値の頭には,is・has・can・shoudをつける.
- ユーザの期待に合わせる
- get:軽量アクセサであるという認識がある.
- 大量のデータの場合はcomputeなどを使う.
- size:計算量は$O(1)$にする.
- get:軽量アクセサであるという認識がある.
美しさ
- 読み手がなれているパターンと一貫性のあるレイアウトを使う.
- 似ているコードは似ているように見せる.
- 関連するコードはまとめてブロックにする.
- 一貫性のある改行
- 縦の線を揃える.
details = request.POST.get('detail') location = request.POST.get('location') phone = request.POST.get('phone')
- 意味のある並びにする.
- 宣言をブロックにまとめる.
コメント
- コードからすぐわかることをコメントに書かない.
- 定数にコメントをつける.
- 代名詞の使用を避ける.
- 関数の動作は正確に説明する.
- よくわからない引数にはインラインコメント
参考文献
- Dustin Boswell,"リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) ",オライリージャパン
Tags: