コード自動生成の拡張性

自動生成したコード(というかクラス)は直接使用せず、必ず継承したクラスを用意して*1、それを使う。再生成した場合、親クラスのみを入れ替え、子クラスは上書きしない。ユーザが独自にメソッドを定義したい場合、親クラスではなく子クラスに用意する。
例えばDBとのやりとり部分を自動生成した場合、

  • 複数カラムから判断するような項目が欲しい場合は、子クラスに追加する
  • 仕様書変更(DBだとカラム追加等)は自動生成しなおし、親クラスを更新する

こうすると、「最初は自動生成で作りました。が、仕様書変更とソース修正を繰り返すうちに生成したソースに追記した部分の適用が面倒になって、途中からソースを直接更新するようになりました。今では仕様書とソースの整合性は誰も確認できません。システム開発はそんなもの。」という非常に良くある風景から脱却できるはず。
もしかしてそんなの常識かも知れないけど、明示的に勧めているフレームワーク・ライブラリは案外少ない、というか見たことはない。
折角javaなんて静的ガチガチ言語使ってるなら、仕様変更はシイタケ*2生やして何ぼです。

*1:最初はテンプレートとして自動生成で出力する、パッケージを別にすると管理しやすいと思う

*2:赤×のエラー