🙆
リーダブルコードについて(第1章)
リーダブルコードとは
- リーダブルコード(Readable Code)は英文にすると、「読み取り可能なコード」のことである
本書ではより良いコードを書くためのシンプルで実践的なテクニックが記載してある。
以下について、解説していきます。
-
参考書
-
理解しやすいコード
-
鍵となる答えは、コードは理解しやすくなければなりません。
(コードを書く上で一番大切な原則) -
鍵となる答えは、コードは他の人が最短期間で理解できるように書かなければならない。
-
コードは短くしたほうがいい。だけど「理解するまでにかかる時間」を短くするほうが大切
- 理解とは ... バグの発見や修正他のコードと連携する方法を理解すること
-
なぜ他の人が理解していないといけないのか?
- 1人のプロジェクトだとしても「他の人」というのは、自分のコードに身に覚えのない「6ヶ月後の自分」かもしれない。
- 誰かが参画するかもしれない
- 「使い捨てのコード」が他のプロジェクトで使われる可能性がある。
-
小さいことは絶対に良いこと?
(コードは短い方が良いという事ではない。)- 問題を解決するコードは短い方が良い.2000行のクラスの方が5000行のクラスの方が理解するまでにかかる時間は短いですが、短い方が良いという事ではない。
コード
assert((!(bucket = FindBucket(key))) || !bucket->IsOccupied());
- 以下のような2行コードを理解するよりも時間がかかることが多い
コード
bucket = FindBucket(key);
if (bucket != NULL) assert(!bucket->IsOccupied());
- コメントをつけるとコードは長くなるけど、「理解するまでにかかる時間」を短くする方が大切
(コメントアウトをする理由)
コード
//"hash = (65599 * hash) + c"の高速版
hash = (hash << 6) + (hash << 16) - hash + c;
-
「理解するまでにかかる時間」は競合する。
(その他の条件の「設計をうまくやる」「テストがしやすい」は理解しやすさと競合しないのか) -
結論は全く競合しない。
- 高度に最適化されたコードがあっても、もっと理解しやすくなる。
- 理解しやすいコードは優れた、設計やテストのしやすさに繋がることは多い
- 常にこのコードは理解しやすいか?を自問自答する事が大事
(理解しやすいコードになってから次のコードを書いても良い) -
想像上の誰かが自分のコードを理解しやすいかを考えること
-
上記目標を受け入れ、自分の仕事に誇りを持ち、バグの少ないコードを作り出せるようになること。
Discussion