リーダブルコード読書メモ ~その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、など。
- 何を表すかが「一目」でわかるように