今関わってるプロジェクトのコード命名がめちゃくちゃ綺麗なので、知見を深めようと思いリーダブルコードを読んだ。
初心者とかはすごく参考にした方が良い良書です。
名前に情報を詰め込む
・明確な単語を選ぶ
例えば、Getではなく状況に応じてFetchやDownloadを使う
・tmpやretvalなどの汎用的な名前を避ける
ただし明確な理由があれば別
・具体的な名前を使って、物事を詳細に説明する
ServerCanStart()よりもCanListenOnPort()の方が明確で良い
・変数名に大切な情報を追加する
秒、ミリ秒などの単位がつくものには _s, _msを後ろにつける
これからエスケープが必要な場合は、 raw_をつける
・スコープの大きな変数には長い名前をつける
これはプロジェクト全体に影響するものは長くてもわかりやすい名前をつけた方がいいよということ
逆にスコープが小さい場合は単語並みに短いもので良い
・大文字やアンダーバーなどに意味を込める
クラスメイとローカル変数を使い分けたりなどなど
他の人(数ヶ月後の自分かも)が誤解されないようにする
・filter,limit,lengthのような曖昧な単語は極力使わない
・上下の限界値を決める際は、 max_ min_ などを使うと良い
・包含的範囲であれば、first_ last_ を使うと良い
・包含/排他的範囲であれば、 begin end を使うと良い
・プール値を使う際は、 is_ has_ などの単語を使う
.disable_のように否定形は極力避ける
美しいネーミングにする
・読み手が慣れているパターンと一貫性のあるレイアウトを使う
・似ているコードは似ているように見せる
・関連するコードはまとめてブロックにする
プログラミングをする時間はほとんどがコードを読む時間なのだ!
・コードに一貫性を持たせる
#悪い例
exampleA = new example_example_example()
exampleA =
new example_example_example()
exampleA = new example_example_example()
#良い例
exampleA =
new example_example_example()
exampleA =
new example_example_example()
exampleA =
new example_example_example()
・複数のコードブロックで同じようなことをしていたら、シルエットも同じようにする
・コードの列を整列すれば、一段とコード全体が見やすくなる
・ある場所でABCと並べていたものをBCAのように並べてはいけない。意味のある順番を抜擢する
#悪い例
a = "朝の挨拶は"
c = "という"
b = "おはようございます"
#良い例
a = "朝の挨拶は"
b = "おはようございます"
c = "という"
・空行を使って大きなブロックを論理的な「段落」に分ける
コメント
・なぜコードが他のやり方ではなくこう書かれているのか
・コードの欠陥を以下の表記を例に書き記す
・TODO: ~ あとで手をつける
・FIXME: ~ 既知の不具合があるコード
・HACK: ~ あまり綺麗じゃない解決策
・XXX: ~ 危険!大きな問題あり
・maybe-later: ~ あとで修正する
・定数の値にまつわる「背景」
・読み手(他の人)の立場になって考え、質問されそうなことをコメントにして、コメントとコードを見れば大まか理解できるようにする
・コメントでは「それ」「あれ」などの代名詞は避ける
・関数の動作はできるだけ正確に
・コードの意図は詳細レベルではなく、高レベルで記述する
・多くの意味が詰め込まれた言葉や表現を使って簡潔に記述する
まとめ
普段から綺麗に描こうと努力していたものの改めて見直すと雑なところがあったかもな...。
大変いい学びになった。
随時追記していきます><