ルール9集約可能なコードを書け

 ぼくの場合、コードがやっていることを理解するためにコードに目を通す作業に、たくさん時間を使うことを余儀なくされている。対象は、デバッグしようとしてるコードかもしれないし、書いてるコードから呼び出そうと思ってるコードかもしれないし、ぼくが担当してるコードを呼び出してるコードかもしれない。そして、そのコードがやろうとしてることが、実際にやってることじゃない場合がよくある。そういうことがあるおかげで、コードに目を通す活動が面白くなる。

 コードを読むといってもせいぜい、他のどんな自然言語を読むのとも変わらないことをやってるにすぎない。コードの語る話に沿って始まりから終わりへと読み進め、話の筋の紆余曲折を熱心に追いかけ、コードの終わりに到達すると、何をやるものなのか、また何故やるのかを、完全に理解できる。

 実際、一番簡単なコードの場合、単語を初見で理解するのと全く同じように、初見でコードを理解するだろう。

int sum = 0;

 あるいはこういうコードもあるかもしれない。

sum = sum + 1;

 以上2つの例では、思考も推論も要らない。コードを一目見るだけで十分理解できる。もっと大きなコードの塊でも、よくある何かのパラダイムにきちんと当てはまるコードなら、同じことができる。

Color Flower::getColor() const
{
    return m_color;
}

 ループ全体を初見で理解することさえできるかもしれない。

int sum = 0;
for (int value : values)
{
    sum += value;
}

 でもさすがにキツくはなってくる。コードの塊が大きくなればなるほど、初見で理解するのは難しくなる。あるいは、ぼくのようなひねくれた老兵プログラマーみたいな人は、コードをちらっと見て理解したつもりになるっていう失敗を何度もしまくってるので、コードを初見で理解する自分の能力を信頼しにくくなっている。 ...

Get ルールズ・オブ・プログラミング ―より良いコードを書くための21のルール now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.