必要になるまで追加しない「You ain’t gonna need it」
というプログラミングの格言である。何かを作っていくと、これもやったほうが良いんじゃないか、あれもやったほうが良いんじゃないかというものが色々出てきます。
それらは必要になるときがいずれ来るだろうという思いから追加すると思いますが、必要になるときが来ることって殆どありません。そんな法則です。
Wikiを見ると次のとおりです。
“You ain’t gonna need it“[1]、縮めて YAGNI とは、機能は実際に必要となるまでは追加しないのがよいとする、エクストリーム・プログラミングにおける原則である。
https://ja.wikipedia.org/wiki/YAGNI
では、このYAGNIを見ていきましょう。
プログラムは最小限に
まず前提として、バグの少ないプログラムは、コード量や機能が少ないプログラムです。
書けば書くほどバグや不具合の可能性は高まってきます。コードが無いならバグもないですからね。
そのことを考えると、バグを少なくするためには機能も絞ったほうが良いと思われる方が多いのではないでしょうか?
実際にはそのとおりです。本当に必要な機能のみに絞って、コード量もコードを書く時間も少なくしていったほうが、結果として満足度が高いプログラムが書けるでしょう。
全てができるプログラムよりは、機能に特化したプログラムのほうが使われる可能性も高くなりますよね。
追加したほうが良いかもと思うようなものを加えるよりは、使う頻度が低いものを消したほうが効果が高いでしょう。
まとめ
必要になるまで追加しない。むしろ、必要ないと思ったものを減らしていく。
その考え方でプログラムを作っていったほうが、より良いソフトウェアができることでしょう。