14

私は MyGeneration を使用しており、Microsoft の Data Access Applicaiton Blocks をデータ アクセス レイヤーに使用するコードを生成し、データベースの概念をモデリングしているドメインと同期させるために、MyGeneration を気に入っています。ただし、生産性を高めるには、ある週末に予想よりも急な学習曲線が必要でした.

コード生成に関連して他の人が何をしているのか気になります。

http://www.mygenerationsoftware.com

http://www.codesmithtools.com/

その他?

2000 年ごろ、私が働いていた会社では、Veritas Software の製品 (そうだったと思います) を使用して、コンポーネントをモデル化し、コンポーネント (dll) を統合したコードを生成していました。私はそれについて多くの経験を積んだわけではありませんが、コード生成は長い間「聖杯」だったようです。実用的ですか?他の人はどのように使用していますか?

ありがとう!

4

27 に答える 27

7

T4 は Microsoft の CodeSmith キラーです!!!!

それをチェックしてください。Microsoft はパートナーを破壊したくないので宣伝していませんが、これは考慮すべきことであり、ITS FREE であり、Visual Studio 2008 にインストールされています。

www.olegsych.com

codeplex.com/t4toolbox

www.t4editor.net

于 2008-09-18T15:35:59.630 に答える
3

LLBLGen と nHibernate を使用して、Entity レイヤーと DAL レイヤーを正常に生成しました。

于 2008-09-18T15:32:42.103 に答える
2

私たちは Codesmith を使用しており、大きな成功を収めています。私は現在、平凡なプロセスを高速化するためにテンプレートを実装できる場所を常に探しています。

于 2008-09-18T15:36:58.520 に答える
1

私は CSLA で作業を行い、codesmith を使用して CSLA テンプレートを使用してコードを生成しました。

codesmithtools.com

于 2008-09-18T15:31:32.090 に答える
1

データベースがモデルの場合、SubSonicには v2.1 の時点で ActiveRecord を必要としない優れたコード ジェネレーターがあります (代わりにリポジトリ パターンを使用できます)。他のものより柔軟性が低くなりますが、ストック テンプレートで行うことができるカスタマイズがあります。

于 2008-09-18T15:32:50.747 に答える
1

私はCodeSmithとMyGenerationを使用しましたが、どちらにもあまり熱心ではなく、使用するのがやや簡潔で、テンプレート言語などを学びました.

SubSonic は、データ アクセス層を生成するためにここで時々使用するものです。適切なサイズのプロジェクトで使用すると、時間を節約する素晴らしいツールになります。クリック音

于 2008-09-18T15:34:29.743 に答える
1

コード生成も有害だと思いますが、codesmith や mygeneration などのサードパーティ ツールを使用する場合に限ります。ドメイン オブジェクトとドメイン インターフェイスを生成する 2 つのストアド プロシージャがあります。

GenerateDomainInterface 'テーブル名'

次に、それをコピーしてビジュアルスタジオに貼り付けます。私が嫌いなタスクには非常にうまく機能します。

于 2008-09-18T15:55:47.447 に答える
1

私がよく使う2つのフレームワーク。

レーゲル

チェックする価値のあるものはRagelです。ステート マシンのコードを生成するために使用されます。

ソース コードに簡単なマークアップを追加し、Ragel でジェネレーターを実行するだけで、C、C++、Objective-C、D、Java、Ruby のコードが生成され、通常のソースと簡単に組み合わせることができます。

Ragel では、状態遷移などでコードを実行することもできます。ファイル形式とプロトコルのパーサーを簡単に作成できます。

Ragel を使用したいくつかの注目すべきプロジェクトは、優れた Ruby Web サーバーであるMongrelです。そして、Ruby ベースの html パーサーであるHpricotは、 jQueryに触発されたようなものです。

Ragel のもう 1 つの優れた機能は、ステート マシンを視覚化するgraphvizベースのチャートを生成する方法です。以下は、Ragel ステート チャートに関するZed Shaw の 記事からの例です。

レーゲル州図
(ソース: zedshaw.com )

XMLBeans

XMLBeansは、Java ベースの xml バインディングです。素晴らしいワークフローがあり、私は頻繁に使用しています。

XMLBeans は、モデルを表す xml スキーマを、そのモデルを表す一連の Java クラスに処理します。プログラムでモデルを作成し、それらを xml との間でシリアル化できます。

于 2008-09-18T16:03:46.130 に答える
0

LLBLGen Proは、データベースにとらわれないソリューションを作成できる優れたツールです。基本的な機能をすぐに理解できます。高度な機能はそれほど難しくありません。ぜひチェックしてみてください。

于 2008-09-18T15:39:24.863 に答える
0

Castorを使用してXSDに基づいてJavaソースコードを作成するために、1回限りのコード生成をいくつか行いました。最新の使用法は、OpenTravelAssociation実装用のJavaクラスを作成することでした。OTAスキーマはかなり毛深いので、手作業で行うのは簡単ではありませんでした。Castorは、スキーマの複雑さを考えると、かなり良い仕事をしました。

于 2008-09-18T16:19:47.620 に答える
0

myEclipse の休止状態ツールを使用して、データ モデルからドメイン モデルと DAO コードを生成します。かなりうまく機能しているように見えます (DAO でカスタム メソッドを記述すると、いくつかの問題があり、これらは上書き時に失われるようです)、一般的には、特に Spring と組み合わせて、かなりうまく機能するようです。

于 2008-09-19T13:30:46.090 に答える
0

パイソン

C# を使用してコード テンプレートを作成する MyGeneration を使用しました。しかし、Python を使い始めたところ、C# で記述した場合よりも高速に他のコードを生成するコードを記述できることがわかりました。その後、Python を使用して gen C#、TSQL、および VB をコーディングしました。

一般に、他のコードを生成するコードは、その性質上、従うのが難しい傾向があります。Python の簡潔な構文は、C# の構文よりも読みやすく、保守しやすいため、非常に役立ちます。

于 2008-09-18T16:40:34.530 に答える
0

CodeSmith を使用しました。かなり役に立ちました。

于 2008-09-18T15:31:11.297 に答える
0

ずっとマイジェネレーション

MyGeneration は、Microsoft.NET で記述された非常に柔軟なテンプレート ベースのコード ジェネレーターです。MyGeneration は、ORM アーキテクチャのコードを生成するのに優れています。データベースのメタデータは、MyMeta API を介してテンプレートで利用できるようになります。

于 2008-09-19T13:27:38.250 に答える
0

テーブルを指定すると、そのテーブルへのすべての変更を記録する Oracle トリガーが生成されるユーティリティを作成しました。ロギングを非常に簡単にします。

与えられたデータベース テーブルをモデル化する Delphi クラスを生成する、私が書いた別のものがありますが、それを行うのはコードのにおいがすると思うので、めったに使用しません。

于 2008-09-19T13:08:18.577 に答える
0

会社では、ほとんどのエンティティ/dalc/ビジネス クラスと関連するストアド プロシージャを生成するために独自のコードを作成しました。これは、わずかな時間しかかからず、いくつかの特別な要件があったためです。既存のジェネレーターを使用して同じことを達成できたと確信していますが、これは楽しい小さなプロジェクトでした。

Codesmith は多くの人に勧められており、良いもののようです。個人的にコードジェネレーターに必要なのは、テンプレートを簡単に修正できるようにすることだけです。

于 2008-09-19T13:12:20.003 に答える
0

サブソニックを愛用しています 。オープン ソースは、コード生成に使用する方法だと思います。なぜなら、テンプレートとコアには常にバグがあったり、やりたいことの 1 つまたは 2 つが組み込まれていない傾向があるため、テンプレートとコアを変更するのは非常に簡単だからです。

于 2008-09-18T15:33:14.503 に答える
0

ベクトル数学ライブラリでスウィズル関数のコード生成を使用しました。カスタムの PERL スクリプトを使用しました。私が調べた FLOSS ジェネレーターはどれも、スウィズル関数の作成に適しているようには見えませんでした。

私は通常、コード生成ではなく、C++ テンプレートを使用します。

于 2008-09-18T15:33:27.453 に答える
0

私は主にLLBLGen Proを使用してコードを生成しました。生成に使用するさまざまなパターンを提供し、CodeSmith と同様に独自のパターンを提供できます。カスタマーサポートは優れています。

基本的に、LLBLGen を使用してビジネス オブジェクトと DAL を生成し、それらを最新の状態に保ちます。コード テンプレートには、再生成中に消去されない独自のロジックを追加できるセクションがあります。一見の価値があります。

于 2008-09-18T15:34:34.203 に答える
0

linq と XML リテラル (VB) を使用してコード生成をカスタム ビルドします。ソリューションをテンプレートに分割する方法はまだ見つかっていません。ただし、これらの 2 つのテクノロジにより、このタスクは非常に簡単になります。

于 2008-09-18T15:35:53.467 に答える
0

.net のコードスミス

于 2008-09-19T13:04:56.653 に答える
0

私は Web エージェンシーで主任開発者として 4 年間働きました。最初の 2 つまたは 3 つの Web サイトをゼロから書いたとき、常にそれを行うのは非常に退屈な作業になることにすぐに気付きました。それで、私は自分の Web サイト生成エンジンを書き始めました。

私の出発点は、このサイトhttp://www.codegeneration.net/でした。私は彼らの例の 1 つを単純なクラッド生成に使用し、それを使用してサイト全体を生成するレベルまで拡張しました。

Web サイトのさまざまな部分 (ページ、データリスト、結合、テーブル、フォーム管理) の定義に xml を使用しました。生成された Web サイトはジェネレーターから完全に切り離されているため、生成された Web サイトは手動で変更することもできました。

ここに彼らの記事http://www.codegeneration.net/tiki-read_article.php?articleId=19があります。

于 2008-09-18T15:42:57.070 に答える
0

サブソニック最高!!クエリ機能は簡単に把握でき、ストアド プロシージャの実装は本当に素晴らしいものです。私は何度も行くことができました。それはあなたを即座に生産的にします。

于 2008-09-28T20:54:34.753 に答える
0

私は主に C# でコードを作成します。コード生成が必要な場合は、ソースが単純に XML に変換できる場合は XLST で、より複雑な場合は Ruby スクリプトに変換します。

コード生成部分が少数の開発者による頻繁な変更を必要とする場合、CodeSmith はかなりうまく機能します (また、新しい開発者にとって XSLT や Ruby よりも習得が容易です)。

于 2008-09-28T21:02:39.507 に答える
0

新しいロジックや洞察を追加せずにコードベースを肥大化させるため、コード生成は有害であると考えています。理想的には、抽象化のレベルを上げ、データ ファイル、テンプレート、またはマクロなどを使用して、大量のボイラー プレート コードを生成しないようにする必要があります。物事を迅速に完了するのに役立ちますが、長期的には保守性が損なわれる可能性があります。

選択したプログラミング言語が、テンプレート言語から生成することで負担が大幅に軽減される場合は、別の、おそらくより動的な言語で高レベルの作業を行うことで、さらに時間を節約できることを示しているようです。YMMV。

于 2008-09-18T15:36:12.343 に答える
0

しばらくの間、コード生成に自家製のスクリプト/テンプレート言語を使用してきました。(私がこの言語を使用したのは、主に私の小さなプロジェクトで使用するためでした)

最近、データベース アクセス コードを作成する SQL*PLUS スクリプトをいくつか作成しました (Hibernate はありません...)。

于 2009-11-18T22:26:52.340 に答える
0

Outsystems のAgile Platformを使用して、オープン ソースの十分に文書化された C# および Java アプリケーションを生成できます。デプロイ、管理、および変更に関連する機能もいくつかあるため、ほとんどの人は、コードを生成するためだけでなく、Web アプリケーションのライフサイクル全体を実際に管理するために使用することになります。

于 2009-11-18T22:21:32.013 に答える