Please enable JavaScript.
Coggle requires JavaScript to display documents.
リーダブルコード/Dustine Boswell and Trevor Foucher (誤解されない名前 (複数の名前を検討する,…
リーダブルコード/Dustine Boswell and Trevor Foucher
鍵となる考え
コードは理解しやすくなければいけない。
コードは他の人が最短時間で理解できるように書かなければならない
名前に情報を詰め込む
明確な単語を選ぶ
tmpやretvalなどの汎用的な名前を避ける
具体的な名前を使って、物事を詳細に説明する
変数名に大切な情報を追加する
スコープの大きな変数には長い名前をつける
大文字やアンダースコアなどに意味を含める
誤解されない名前
複数の名前を検討する
上下の限界値にはmax、minを前につける
包含的範囲にはfirst、lastを使う
包含/排他的範囲にはbegin、endを使う
ブール値にはisやhasなどを使う
disable_sslなどのような否定形は避ける
getやsetなどのメソッドは軽量と期待されるので単語に対するユーザーの期待にも注意する
美しさ
複数のコードブロックで同じようなことをしていたら、シルエットも同じようなものにする
コードの「列」を整列すれば、概要が把握しやすくなる
ある場所でA・B・Cと並んでいたものを、ほかの場所でB・C・Aのように並べてはいけない
意味のある順番を選んで、常にその順番を守る
空行を使って大きなブロックを論理的な「段落」に分ける
コメントすべきことを知る
コメントの目的はコードの意図を読み手に理解してもらうこと
コードからすぐに抽出できることはコメントすべきでない
ひどいコードを補うコメントを書くのではなくコードを修正する
記録するべき
なぜコードが他のやり方ではなくこうなっているのか
コードの欠陥
定数にまつわる背景
読み手の立場になって
読んだ人が「えっ」と思うところを予想して
平均的な読み手が驚くような動作
ファイルやクラスには全体像を書く
読み手が細部に捕らわれないようにコードブロックにコメントをつけて概要をまとめる
制御フローを読みやすくする
比較を書くときは変化する値を左辺、安定した値を右辺
if/else文のブロックは肯定系・単純・目立つものを先に
三項演算子・do/while・gotoはコードが読みにくくなることが多い
ネストしたコードは集中力を要するのでなるべく直線的に
ガード節をつかって早めに返す
巨大な式を分割する
大きな式の値を保持する説明変数を導入する
ド・モルガンの法則を使って論理式を理解しやすくする
複雑な論理条件は小さな文に分割する
変数と読みやすさ
邪魔な変数を削除する
変数のスコープをできるだけ小さくする
一度だけ書き込む変数を使う
無関係の下位問題を抽出する
プロジェクト固有のコードから汎用コードを分離する
ただし小さな関数を作りすぎない
一度に一つのことを
コードは1つずつタスクを行うようにしなければならない
タスクをすべて列挙して関数に分割する
コードに思いをこめる
コードを簡単な言葉で説明する
うまく言葉で説明できないのであれば何かを見落としているか、詳細が明確になっていない
短いコードを書く
不必要なコード機能をプロダクトから削除する
過剰な機能は持たせない
最も簡単に問題を解決できるような要求を考える
定期的にすべてAPIを読んで標準ライブラリに慣れ親しむ
テストと読みやすさ
テストコードでも読みやすさが大切
テストのトップレベルはできるだけ簡潔に
テストに失敗したらバグの発見や修正がしやすいようなエラーメッセージを表示する
テストに有効な最も単純な入力値を使う
テスト関数に説明的な名前をつけて何のテストをしているのか明らかにする