古典的なasp作業を行っていたとき(2001年頃)、自分のジェネレーター(データアクセス、sprocsなど)をロールバックし始めました。扱いがはるかに簡単だったので、ゆっくりとCodeSmithに移行しました。私はまだ主に、.NETコード用のすべてのデータアクセス層タイプのもの(sprocを含む)を生成していました。
数年前、私はマクロコード生成(つまりCodeSmith)からマイクロコード生成にジャンプしました。
違いは、CodeSmithを使用して、アプリ用に大量のコードをすべて汎用で一度に生成していたことです。これは、エッジケースや、テンプレートのソース(つまり、テーブル構造)を変更するときに再生成する場合に問題になりました。また、使用していないがテンプレートから生成されたコードを運ぶための在庫が多い場合もありました。これらの方法はすべて機能しましたか?多分そうでないかもしれません。生成されたコードにアクセスしてクリーンアップするのは、膨大な量の作業でした(つまり、同じコードベースで1年以上経過した後)。
対照的に、マイクロコード生成では、必要なクラスを正確に、必要なシナリオで正確に生成できます。これを行うために使用する主なツールはReSharperです。これを行う方法は、本番コードを作成する前に単体テストを作成することです。そのシナリオでは、ReSharperはユニットテストをテンプレートとして使用して、本番コードのスケルトンを自動生成します。次に、空白を埋めるだけです。
データアクセスの場合、私はもう何も生成していません。優れたO/RMが、データアクセス層(つまりNHibernate)に配置するために使用したすべてのものに取って代わることがわかりました。それを考えると、私は自分の人生で別のデータアクセス層を作成したり生成したりすることは決してありません(私は拒否します)。
さらに、特に大規模なユニットテストスイートを使用できるというメリットがあります。