プロジェクトや言語をまたいで同じことを繰り返さないようにする方法

StackOverflow https://stackoverflow.com/questions/113696

  •  02-07-2019
  •  | 
  •  

質問

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

このパターンは現在、いくつかの場所といくつかの言語でハードコーディングされており、メンテナンス爆弾となっています。このパターンを特定のプロジェクトで 1 回だけ定義するのは非常に簡単ですが、すべてのプロジェクトおよび使用中のすべての言語でこのパターンを一度だけ定義するためのテクニックは何でしょうか?

役に立ちましたか?

解決

ドメイン固有言語を作成し、それを使用している各ターゲット言語のコードにコンパイルするのが、最良の (そして最もエレガントな) 解決策です。

DSL を作成するのは難しくありません。DSL を何かに埋め込むか (現時点では Ruby 内に埋め込むか、LISP/Haskell のような別の言語など)、文法を最初から作成します (Antlr を使用しますか?)。 。プロジェクトが大規模なようであれば、このパスに取り組む価値はあります。

他のヒント

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

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

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

ファイル名の生成には、一般的なスクリプト、プロセス、または Web サービスを使用できます (設定に応じて)。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top