コード自動生成の拡張性
自動生成したコード(というかクラス)は直接使用せず、必ず継承したクラスを用意して*1、それを使う。再生成した場合、親クラスのみを入れ替え、子クラスは上書きしない。ユーザが独自にメソッドを定義したい場合、親クラスではなく子クラスに用意する。
例えばDBとのやりとり部分を自動生成した場合、
- 複数カラムから判断するような項目が欲しい場合は、子クラスに追加する
- 仕様書変更(DBだとカラム追加等)は自動生成しなおし、親クラスを更新する
こうすると、「最初は自動生成で作りました。が、仕様書変更とソース修正を繰り返すうちに生成したソースに追記した部分の適用が面倒になって、途中からソースを直接更新するようになりました。今では仕様書とソースの整合性は誰も確認できません。システム開発はそんなもの。」という非常に良くある風景から脱却できるはず。
もしかしてそんなの常識かも知れないけど、明示的に勧めているフレームワーク・ライブラリは案外少ない、というか見たことはない。
折角javaなんて静的ガチガチ言語使ってるなら、仕様変更はシイタケ*2生やして何ぼです。