リーダブルコード読書メモ ~その1~

リーダブルコードを読んでいきます。前にも読んだことあるけど、次の会社行くまでに再度目を通しておきたい。

1章

  • コードは他人(未来の自分も含む)が読んで、理解しやすくなければならない。これが大原則

    • 理解にかける時間は短く。
    • 理解する、とは変更を加えたり、バグを見つけたりしやすいこと
  • 短く簡潔なコード<長いけどわかりやすいコード

    • 変数定義、条件分岐などが分かりやすい
    • 1行でまとめてバシッと書くより、複数行に分けて人間が自然に(考え込まずに)処理の流れが追えるように。

2章

  • 変数、クラス名、関数名に情報を詰め込む。
    • 何を表すかが「一目」でわかるように
      • getはただ「取得」を意味するが、downloadのほうが「どうやってとるか」を表している
      • sizeは何かの「大きさ」を意味しているが、widthやheightなどのほうがより具体的なものを表している
      • 類語の引き出しを作っておく
    • tmpとかretvalとかは何かの変数を表している以外の情報はない。
      • 具体的にどういう意味を持った値が格納されるかを名前に込める。面積、体積、ユーザのプロフィール、など
      • ただ、tmpについては、swap処理など一時保存的に利用する場合はそれでいい。この場合は本当に一時保存の意味を表しているので。
    • ループに使うi,j,kについてはこのまま使って問題ない。
      • ただ、ループが二重、三重とかになると可読性が落ちるので、もう少し情報を付加するとよい。例えばユーザに対するループであれば「ui」とか
    • 関数名は動作が分かるようにする
      • TCP/IPポートをサーバがリッスンできるかを確認する → CanListenOnPort()
    • 単位
      • 変数名に単位を付けられるなら、その情報を付与する(秒、センチ、など)
    • セキュリティに関する話題
      • セキュリティ対策前後が明確にわかるようにする。plaintext_password →(暗号化)→passwordなど。そうすれば、暗号化漏れなどを検知できる。
    • 名前の長さはなるべく短くする
      • 情報をわかる範囲で圧縮する。evaluate→eval、document→doc、string→strなど。
      • 不要な単語は切り捨てる。ConvertToString→Tostring、など。