・名前に関して
・美しさ
・コメントに関して
・制御フローを読みやすく
・巨大な式を分割
・変数と読みやすさ
・一度に1つのことのみ行う
・短いコードをかく
・テストと読みやすさ
・優れたコードは理解しやすいコードです。
・コードは理解しやすく書くことを優先します。
・コードは他の人が短時間で理解できるように書きます。
・コードを短くするのは良いことですが、理解するまでにかかる時間を短くする方が大切です。
・明確な単語を選びます。
・汎用的な名前(tmpやretvalなど)を避けます。
・抽象的な名前より具体的な名前にします。
・名前の長さに気をつけます。
(スコープが小さいなら短い名前、スコープが大きいなら長い名前)
(分かりづらい略語はNG)
・名前のフォーマットで情報が伝わるようにします。
(クラス名はキャメルケース、変数名はスネークケース)
・名前が他の意味と間違えられる可能性がないか吟味します。
・限界値を表すためには名前にminやmaxをつけます。
・インデントは整えます。
・読み手が慣れているパターンと一貫性のあるレイアウトを使います。
・似ているコードは似ているように書きます。
・関連するコードはまとめてブロックにします
・コメントの目的は、書き手の意図を読み手に知らせることです。
・コメントすべきではない事に気をつけます。
(コードからすぐわかる事・コメントのためのコメント・名前がひどいために補足するコメント)
・コードの意図を書きます。
・情報密度の高い言葉を使います。
・読み手の立場になって何をコメントすべきか考えます。
・ハマりそうな事はコメントに残します。
・プログラムの全体像についてもコメントします。
・巨大な式は飲み込みやすい大きさに分割します。
・説明変数を使い、変数名で式を説明します。
・要約変数(その式の意味が要約された名前の変数の式)を使い、管理や把握をしやすくします。
・分かりづらい式はド・モルガンの法則を使って分かりやすく書き換えます。
・短絡評価を使用する事で分かりづらくならないよう気をつけます。
・削除できる変数は削除します。
(役に立たない一時変数・中間結果を保持するためだけの変数・制御フロー変数)
・変数のスコープを縮めます。
・変数の変更箇所はなるべく少なくします。
・関数は1度に1つのことのみ行うべきです。
・複雑な関数があったら、関数が行なっているタスクを列挙し、タスクを異なる関数に分離します。
・機能を過剰に見積もらないように気をつけます。
・コードを小さく保ちます。
・未使用のコードを削除します
・既存のライブラリで解決できることは解決します。
・テストを読みやすくて保守しやすいものにします。
・大切でない詳細は隠し、大切な詳細は目立つようにします。
・テストが失敗したらバグの発見や習性がしやすいようなエラーメッセージを表示させます。
・テストに有効なもっとも単純な入力値を使います。
・テスト関数に説明的な名前をつけます。
・以前はピンと来なかった内容がなんとなくわかるようになった。
例)ここまで名前にこだわる?
制御フローを読みやすくとは?
・来年の2月くらいにまた読もうと思う。