私はかなり複雑なものをT4テンプレートに詰め込んでいます。基本的に私は...T4コードをもっときれいにするためにそこに何かありますか?
{= FOO =}複数のテキストのようなものを取る
などのようなクラス(ビュー)に変換:
public class MyView
{
public string foo{get;set;}
public string Write()
{
return [email protected]" more text...";
}
}
生成コードされますもちろんそれよりはるかに複雑です。とにかく、T4テンプレートは現在600行以上のコードであり、本当に管理不能になっています。私は主な問題は、コードと "コンテンツ"(つまり、静的コード)を混ぜることだと考えています。私は本当にこの問題をきちんと修正する方法はわかりません(生成されたコードには影響しません)。私はT4コードの単体テストを実現する方法も見当たりません。単にT4の実行エラーをテストするだけです。もちろん、生成されたコードをテストすることはほとんど不可能な作業であるようです。
T4テンプレートコードをよりきれいにするために使用できる「モデルビュー」タイプのフレームワークまたはテクニックはありますか?これは、最小(メンテナンス上の問題の多くの場合、原因)にテンプレートロジックを維持するのに役立ちます -
これはオプションではないかもしれませんが、私は[Resharper Templates](http://www.jetbrains.com/resharper/features/code_templates.html)をT4テンプレートより優先します。また、[Resharper](http://www.jetbrains.com/resharper/)は他の用途にも優れたツールです。コストの価値がある – TylerOhlsen
Resharperは良いツールですが、Resharper TemplatesとT4を比較したIMHOはリンゴとオレンジを比較しています。 Resharperテンプレートは、ツールのサポートでコピー・ペースト・アンチ・パターンを促進し、管理しなければならないコードがますます冗長化され、メンテナンスのコストが増加します。 T4(および他のツール)は、コードアーチファクト(大量のリダンダンシーを伴う)を生成するメタプログラム(冗長度が低い)を書くという点で、冗長性を最小限にします。重要なのは、メタプログラムと生成されたコードとの間のカジュアルな接続が失われないということです。 – FuleSnabel