著作一覧 |
ちょっとした案件があって8本ほど、アプリケーションを作ったのだが、仕様は単純、内容は明白だったので(あと、ユーザインタラクション系だというのもあるけど)、ついTDDせずに1本作った(別に強力なテストチームがいるからお任せモードというのもあるが、もちろんTDDのテストとは異なるから言い訳っぽい)。で、また一本、そして一本。
3本作って、それらすべてに共通する構造があれば、フレームワークが作れる。
というわけで、簡単なフレームワーク――というよりもテンプレートメソッドパターン(ファクトリメソッドパターンを含む)を実装クラス(十分に小さなやつなのでファクトリクラスを兼ねる)と、そいつを回すストラテジパターン――を実装し、4本目からそれを使うようにした。当然のようにあっというまに8本できる。
そこでしまったと気付く。
最初の3本が浮いている。が、既に動き出しているので変える気がまったく起きない。
結局、3本目と4本目の間に(本来の実装を伴わないという意味で)仮想的なリファクタリングを行ったことになるが、ある意味無駄なことをした。
本来であれば、ユニットテストがあって、それを適用しながら3本をリファクタリングすることでフレームワークを得て、それに残りを適用すべきだったのだ。
というわけで、つくづくユニットテストを作りながら実装すべきであるなぁと思った。
ジェズイットを見習え |
なんという超同感。