August 2023
Intermediate to advanced
452 pages
5h 11m
Japanese
ぼくの場合、コードがやっていることを理解するためにコードに目を通す作業に、たくさん時間を使うことを余儀なくされている。対象は、デバッグしようとしてるコードかもしれないし、書いてるコードから呼び出そうと思ってるコードかもしれないし、ぼくが担当してるコードを呼び出してるコードかもしれない。そして、そのコードがやろうとしてることが、実際にやってることじゃない場合がよくある。そういうことがあるおかげで、コードに目を通す活動が面白くなる。
コードを読むといってもせいぜい、他のどんな自然言語を読むのとも変わらないことをやってるにすぎない。コードの語る話に沿って始まりから終わりへと読み進め、話の筋の紆余曲折を熱心に追いかけ、コードの終わりに到達すると、何をやるものなのか、また何故やるのかを、完全に理解できる。
実際、一番簡単なコードの場合、単語を初見で理解するのと全く同じように、初見でコードを理解するだろう。
int sum = 0;
あるいはこういうコードもあるかもしれない。
sum = sum + 1;
以上2つの例では、思考も推論も要らない。コードを一目見るだけで十分理解できる。もっと大きなコードの塊でも、よくある何かのパラダイムにきちんと当てはまるコードなら、同じことができる。
Color Flower::getColor() const
{
return m_color;
}
ループ全体を初見で理解することさえできるかもしれない。
int sum = 0;
for (int value : values)
{
sum += value;
}
でもさすがにキツくはなってくる。コードの塊が大きくなればなるほど、初見で理解するのは難しくなる。あるいは、ぼくのようなひねくれた老兵プログラマーみたいな人は、コードをちらっと見て理解したつもりになるっていう失敗を何度もしまくってるので、コードを初見で理解する自分の能力を信頼しにくくなっている。 ...
Read now
Unlock full access