1

私は、異なるプログラミング言語でいくつかの異なるが関連するプロジェクトに取り組んでいます。これらのプロジェクトのいくつかは、他のプロジェクトによって書かれたファイル名を解析する必要があり、特定のファイル名パターンを想定しています。

このパターンは現在、いくつかの場所といくつかの言語でハードコーディングされており、保守爆弾になっています。特定のプロジェクトでこのパターンを 1 回だけ定義するのはかなり簡単ですが、すべてのプロジェクトと使用中のすべての言語に対して、このパターンを 1 回だけ定義する手法は何ですか?

4

5 に答える 5

1

パターンを単純なテキスト ファイルに保存し、特定のプロジェクトに応じて次のようにします。

  • ビルド時にソースに埋め込む(前処理)
  • 上記がオプションでない場合は、実行時に読み取られる構成ファイルとして扱います

編集:パターンは正規表現よりも複雑ではないと思います。それ以外の場合は、別の回答のDSLソリューションを使用します。

于 2008-09-22T07:57:40.407 に答える
1

ファイル名を生成するために、一般的なスクリプト、プロセス、または Web サービスを使用できます (セットアップによって異なります)。

于 2008-09-22T07:59:30.760 に答える
1

どの言語について話しているのかわかりませんが、ほとんどの言語は外部動的ライブラリ dll/共有オブジェクトを使用し、このライブラリから共通機能をエクスポートできます。たとえば、関数 get file name を単純な c lib に実装し、acros の残りの言語を使用します。
もう 1 つのオプションは、各言語のビルド プロセスの一部として共通コードを動的に作成することです。これはそれほど複雑ではありません。
可能であれば動的リンク アプローチを使用することをお勧めします (これを判断するのに十分な情報が提供されていません)。このソリューションを維持する方が、さまざまな言語のコード生成を維持するよりもはるかに簡単だからです。

于 2008-09-22T08:05:28.250 に答える
1

ドメイン固有言語を作成し、それをコンパイルして、使用している各ターゲット言語のコードにコンパイルするのが最善の (そして最も洗練された) ソリューションです。

DSL を作成するのは難しくありません - それを何かに埋め込むか (Ruby は現在 'in' であるため、または LISP/Haskell のような別の言語のように...)、ゼロから文法を作成します (Antlr を使用しますか?) . プロジェクトが大きいように思われる場合は、このパスを検討する価値があります。

于 2008-09-22T07:56:58.503 に答える
0

パターンをデータベースに入れる - 最も簡単で快適な方法は、XML データベースを使用することです。このデータベースはすべてのプロジェクトからアクセスでき、そこからパターンを読み取ります

于 2008-09-22T07:56:23.640 に答える