プリンシプル

プリンシプル YAGNI原則

You ain’t gonna need it. (必要ないって。) 読み方は、ヤグニ。

必要になったとき、必要なものだけ書べきである。

時間は有限であり、目的を達成するために必要なことだけをすべきである。

使うだろうという予想して作ったものはだいたい使われない。その時間の90%は無駄になる。(参考)このことから、予想して作ったものの9割は無駄、的外れなものになる。

コードはできる限り書かないこと。それは素早く書くこと、バグを減らすことに繋がる。

使われるかわからないのに書かれたコードは、リソースの浪費(ビルド時間など)になる。不要なコードが混ざると保守すべきものと区別するための仕組みや流れなど、考えることが増え、複雑になってしまう。結局必要なかったとき、書いた時間、読んだ時間、すべてが無駄になる。また、時間が経ち、なぜそのコードがあるのかわからなくなったとき、経緯がわからなければ迷惑なモノ(不要な確認の時間)でしかなくなる。

単純性と汎用性を比べるなら、単純性を選ぶべきだ。(そもそも同列に考えるものではないと考える)汎用性は再利用性や拡張性に寄与するが、「使えるか」を考えると単純性を選ぶべきだ。また、単純なもののほうが、複雑なものに比べて汎用性は高いだろう。変更の容易さでも同じだ。単純であるべきだ。