PLINQO テンプレートに CodeSmith を使用して、DB オブジェクトから DAL を構築します。それはうまくいきます!
それがコード ジェネレーター アプリの主な用途だと思いますが、興味があります... コード ジェネレーターの使用を検討する他のコードは何ですか? 頻繁に使用する CodeSmith テンプレートはありますか (ある場合、それは何をしますか)?
PLINQO テンプレートに CodeSmith を使用して、DB オブジェクトから DAL を構築します。それはうまくいきます!
それがコード ジェネレーター アプリの主な用途だと思いますが、興味があります... コード ジェネレーターの使用を検討する他のコードは何ですか? 頻繁に使用する CodeSmith テンプレートはありますか (ある場合、それは何をしますか)?
私は CodeSmith を使用したことはありませんが、かなりの量のコード生成を行いました。特に、WiMAX システム用の構成管理 (CM) システムのほとんどを作成しました。ここで、CM コードは 3 つの異なるプラットフォーム用に生成されました。唯一の違いは、各プラットフォームの CM モデルです。
モデルは、私たちが構築したパーサーを備えたカスタム ドメイン固有言語 (DSL) にありました。この言語は、コンテナがネストして識別子を持つことができる基本的なコンテナ/要素スタイルであり、要素は事前定義された型でした。ドキュメントは要素とコンテナの属性でした。要素とコンテナの定義にLuaスニペットを追加して、セマンティック検証を行うことができます (たとえば、値が正しい範囲内にあるか、IP アドレスの場合は別の場所で定義された CIDR 範囲内にあるかなど)。
パーサーは構文ツリーを生成し、それをテンプレートにプッシュしました。テンプレート言語はStringTemplateの部分的な C 実装でした。これを使用して以下を生成しました。
振り返ってみると、Lua を DSL として直接使用するべきでした。それはもっと冗長だったでしょうが、パーサーがすでにそこにあり、多くの Lua テンプレートの選択肢が利用可能であれば、多くの開発労力を節約できたでしょう。
反復構造と、それらが何をする必要があるかについて明確に定義されたルールを持つものについては、コード生成は素晴らしいものになる可能性があります。