リーダブルコードほぼ読み切ったのでまとめを。チェックリスト化して、常にこれを見ながらコードは書いたほうがよさげ
前半のまとめや参考リンクでみたものとマージします。
変数の名称
- 具体的でわかりやすい名称にする
- 一般論としてスコープに比例して名前に情報を入れる必要あり
- 長すぎる場合は短縮形を使ったり、不要な単語を削る
- フォーマットを決めて形式で情報を伝える
- 各種よく使われる命名パターンを覚える(最大最小 max or minなど)
- 否定よりも肯定など、意味がとりやすい名称にする
コード自体の見た目
- 改行位置を揃える
- 縦の情報がずれていないようにする
- 似たような変数は目で見てグルーピングがわかるようにする
コメント
- 当たり前のことを書かない
- コメントが冗長になりそうであれば命名などを考える
- 実例を書く
- 文章よりは式や箇条書きなど意味が簡潔でわかりやすいものにする
- クラスやファイル自体は全体像のコメントを書く
制御フロー
- if文は比較される値を右に。できれば<のほうが見やすい
- 否定形よりも肯定系で
- 除外できる結果は早く返す
- ネストを浅くする(できれば2段でとめる)
コードの分割
- 1行に処理が詰まりすぎている場合は変数を使い分割
- 条件分岐は反転させられないかを考える
- 条件分岐で処理がありすぎる場合は分割する
- 別解を考える
変数の使い方
- 不要な一時変数の削除
- できるだけスコープを縮める(ローカル > インスタンス > グローバル が良い)
- 使用箇所と近い場所での定義
- 書き込むのは一度だけ(orなるべく数なくする)
コードの抽象化
- 汎用的な機能はできるだけユーティリティークラスにまとめる
- タスク自体の機能を抽出して、別のメソッドとしてまとめる→オブジェクト指向を心がける
- 一単位当たりのタスクは常に小さくする
メソッド
- 全体として短いコードを書くことを心がける。目安は20~30行以内
- 引数は4つ以下にする。それ以上なら設計に問題あり。
ライブラリ
- 汎用的な機能を使う場合はまずライブラリや言語に標準搭載されている機能を探す。そのほうがバグが少なく、スピードが速い。
- プログラムを書く前にUnixコマンドやMySQLなどもっと問題を早く解決できるツールを検討する
スピードの改善
- 処理効率を考える
- できるだけデータベースや外部ファイルのアクセスを少なくする。(ここが一番時間がかかる)
その他
- エラーメッセージを分かりやすく出力する
- nullチェックを常に心がける