積み上げが大事

http://homepage3.nifty.com/mogami/diary/d0606.html#20t1

▼ なぜ最初から作り直したくなるのか

長い間に、プログラムをどんどん機能拡張して行くとだんだんコードが汚くなってくる。ローカルな問題はいいんだけど、とくにデータ構造や大局的なアルゴリズム、プログラム内のインターフェイスなんかが汚くなって、「もう作り直すしか無い」と考えるようになる。

しかし、最初から作り直すのは大抵は間違いだ。地道なリファクタリングで大抵はなんとかなる。 自分でcipherで実践してみてもまったくそう思う。できるはずが無いと思えるようなアルゴリズムの大変革でも連続的な等価変形を積み重ねてできる。そのあいだプログラムは常に動く状態を保てる。

その経験から反対に、なぜ連続的な変形/改良では解決できないように思えるかの原因も分かる。 最終的にどうしたいのかが分かっていれば、大抵は連続的な変形/改良の経路を発見する事ができる。

つまり改良が不可能なような気がするのは、最終的にどうするべきか分かっていないからなのだ。

こういうふうに目標が分かって無いときにこそ、何もかも放棄して作り直したくなるものなのだ。 しかし、目標が分かって無いのに最初から作り直して、それでより良い物を作れるかは疑問だ。

耳が痛い・・・。