YAGNI (You Are'nt Going to Need It)
XP(エクストリーム・プログラミング)に、YAGNIという言葉があります。"You Are'nt Going to Need It"の略で、「そんなの必要ないって」という意味です。
Wikipedia大先生は、こう語ります。
YAGNI原則を提唱する人々は、その理由として以下を挙げている。
あとで使うだろうとの予測の元に作ったものは、実際には10%程度しか使われない。したがってそれに費やした時間の90%は無駄になる。
余計な機能があると我々の仕事が遅くなり、リソースを浪費する。
予期しない変更に対しては設計を単純にすることが備えとなるが、今必要とする以上の機能を追加すると設計がより複雑になってしまう。
あなたの人生の時間は貴重である。あなたの能力は単にコードを書くためではなく、現実の問題に集中するために使うべきである。
結局はその機能は必要ないかもしれない。もしそうなったら、あなたがその機能を実装するのに費やした時間も、他のみんながそれを読むのに費やした時間も、その機能が占めていたスペースも、すべて無駄になってしまうだろう。
コードをすばやく実装するために最も良い方法は、あまりコードを書かないことである。バグを減らすために最も良い方法も、あまりコードを書かないことである。
「拡張性がどうたらこうたらー」と言いながら、「将来○○になることを想定して」とコードを汚していく光景をよく見かけます。私個人としましては、上記のことより、その将来を見越したコードが、基本的に満足にテストされていないことが気になります。
後からコードを見た人は、実績あるコードだから信頼して使おうとするのですが、実際そのコードは運用上動いていないのです。つまり、実績がないのです。満足なテストがなされていないコードが、リリースしたソフトウェアに含まれていたら、後から使う人が困るので、そんなもの置いておかないで、と思います。
でも、このYAGNI、プログラミング以外にも言えますよね。例えば部屋の掃除。「You Are'nt Going to Need It(どうせ必要ないって)」の精神で、どんどん捨てましょう。
ではでは。