🙆

リーダブルコードについて(第1章)

2023/02/09に公開

リーダブルコードとは

  • リーダブルコード(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