壊れたコードの理論(日本語訳)
著者:Alexander Guz April 24, 2016
破壊行為、公共の場での飲酒、料金滞納などの小さな犯罪を防ぐために都市環境を維持・監視することで、秩序と法の雰囲気を作り出し、より重大な犯罪の発生を防ぐことができる。
この理論は、社会科学者のジェームズ・Q・ウィルソンとジョージ・L・ケリングが1982年に発表した「Broken Windows」という論文の中で紹介されており、そこにはある例が示されていた。
壊れた窓がいくつかある建物を考えてみましょう。もし窓が修理されなければ、荒らしはさらにいくつかの窓を壊していく傾向があるでしょう。最終的には、その建物に侵入し、無人であれば不法占拠したり、中で火をつけたりするかもしれません。
著者は、問題が小さく管理しやすいときに対処することで、バンダリズムを防ぐことを提案しています。
同じ理論がソフトウェア開発にも適用できると思います。「悪い」コードを書くことは、破壊行為として観察されるかもしれません。それは、クリーンでロバストなソリューションをプログラムするか(しばしば複雑で長いことを意味する)、素早くダーティなハックをするかです。その時、コードは2つの状態になっているかもしれません。
コードはクリーンで、ダーティなハックもない。
ダーティなハックがある。
誰も気づかないような小さなハック」を追加したくなるのはどんなときだと思いますか?その通りです。2番目のケースです。締め切りがありますからね。しかし、最初のケースでそうする必要があるとしたら、間違いなく不快に感じるでしょう。なぜなら、クリーンなコードという確立された規範があり、それを壊したくないと思うからです。
理想的な世界では、コードは常に完璧ですが、現実の世界では、時間の経過とともに小さな(時にはそうでない)修正の集合体になってしまいがちです。それを防ぐためには、普通の破壊行為と同じように、ハックしたものはできるだけ早く削除したり置き換えたりするべきです。小さな修正を追加することは、明らかに設計上の判断を誤るだけでなく、他の人に「もっと追加してくれ!」というメッセージを送ることにもなります。