16章単純に保つ

単純さは究極の洗練である。

――レオナルド・ダ・ヴィンチ

KISS」という助言を以前に聞いたことがあると思います。つまり、「単純に保て、お馬鹿さん」(Keep it simple, stupid)です。それを読み間違えることはありません。単純さは優れた目的です。間違いなく、自分のコードに単純さを求めて努力すべきです。過剰に複雑なコードに取り組むことに憧れるプログラマはいません。単純なコードは透き通っています。その構造は明瞭であり、バグを隠していませんし、学ぶことも取り組むことも容易です。

では、すべてのコードがそうなっていないのはなぜでしょうか。

開発者の世界には、二種類の単純さがあります。誤った種類の単純さと正しい種類の単純さです。はっきり言えば、私達が追い求めている「単純さ」は、「できるだけ容易な方法でコードを書き、手抜きをし、厄介で複雑なものをすべて無視し(絨毯の下に押し込んで消えるのを願い)、間抜けなプログラミングであること」ではありません。

物事がこんなに単純であればどんなによいでしょう。多くのプログラマがこのような「単純な」コードを書いています。彼らは頭を働かせていないのです。プログラマによっては、悪いことを行っていることに気づいてさえいません。書いているコードについて十分に考えておらず、本質的に微妙な複雑さのすべてを正しく認識できていません。

このような頭を使わないやり方は単純なコードではなく、極度に単純化されたコードを生み出します。極度に単純化されたコードは、正しくないコードです。考え抜かれていないので、必要とされることを正確に行わないのです。たいていは、「主要な処理」だけを行い、エラー状態を無視したり、まれな入力を正しく処理しなかったりしています。このため、極度に単純化されたコードは、障害の温床です。これはひび割れになり、さらに極度に単純化されたコードで覆われます。このようなコードの修正は、一つずつ積み上げられ、最後にはコードが途方もないめちゃくちゃなものになっていきます。きちんと構造化された単純なコードとは、まさに対極の状態になっています。 ...

Get ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.