TL;DR

設計の誤りや改善の機会に気づいたら、少しずつ時間をかけて直し続けること。A Philosophy of Software Design で、戦略的プログラミングの一部として説かれている。

なぜ必要か

A Philosophy of Software Design によると、設計上の判断の誤りは避けられず、時間が経つと明らかになる。大規模なソフトウェアを事前にすべて見通すことはできないので、設計に終わりはない。誤りを無視したり場当たり的に対応したりすれば、戦術的プログラミングと同じになり、将来問題を起こす複雑さが少しずつたまる。

仕組み

システム全体を最初に設計するような大きな先行投資は効果がなく、小さな投資を継続して数多く行うほうがよい。目安は総開発時間の 10〜20% 程度である。既存のコードを変えるときも、変更を踏まえて今の設計が最善かを考え、最善でなければリファクタリングする。こうすれば、変更のたびに設計が良くなる。

関連

出典