3

サブルーチンと共通コードの一部をクラス ライブラリまたは DLL に配置する必要があると判断したのはどの時点ですか? 私のアプリケーションの 1 つで、異なるプロジェクト間で共通のコードの一部を共有したいと考えています (ご存知のように、コードを複製することはプログラミングの罪です)。

私のコードの大部分は、すべて 1 つのプロジェクト内にあります。また、メインの実行可能ファイルから分割された小さなユーティリティも 1 つあります。このユーティリティは、専用の目的で昇格されたアクセス許可で実行されます。2 つの項目には、最大で 3 つのサブルーチンが共通しています。これらの共通サブルーチンを配置して、クラス ライブラリから呼び出す必要がありますか? これをいつ行うかをどのように決定しますか?少なくとも 1 つの共有サブルーチンがある場合は? 20行以上のコード?

これが言語固有またはフレームワーク依存であるべきだとは思いませんが、そうであれば、.NET フレームワークを使用しています。

4

2 に答える 2

1

アプリケーション間でコードを共有するには、DLL を使用するよりも多くの方法があります。一見すると、多くのコードについて話しているわけではないので、あまり気にする必要はないように思えます。

一般的に、私は次の経験則を使用します。

  • 些細なコードの複製 (理解しやすく、デバッグしやすい 2 つの単純な 1 ~ 2 行の関数) については、コードをコピーして貼り付けるだけです。

  • より複雑な関数 (1 つまたは 2 つのファイルに含まれるスタンドアロンのヘルパー関数の小さなライブラリであり、適度なレベルのメンテナンスとデバッグが必要です) の場合は、両方のプロジェクトにファイルを含めるだけです (リンクするか、サブリポジトリ、またはそのようなもの)。

  • より広範なコード共有 (相互に関連するクラスのグループ、または複数のプロジェクトに役立つデータベース通信レイヤー) のために、それらをスタンドアロン ライブラリにリファクタリングし、プログラミングに適したものを使用してパッケージ化し、配布します。の。

コード管理の複雑さはステップごとに桁違いに増加するため (複数のプロジェクトの DLL をパッケージ化する場合は、バージョン管理の問題について考える必要があります)、必要な場合にのみ次のレベルに進みたいと考えています。共通コードの処理にまだ苦労しているようには思えません。その場合は、本当の必要性はありません。

于 2010-07-08T15:15:00.760 に答える
0

コードが複数のアプリケーション間で共有されている場合は、DLLまたはクラスライブラリに存在する必要があります。

大規模なアプリケーションの場合は、アプリケーションのさまざまなサブシステムを個別のライブラリに分割することもできます。そうすれば、各プロジェクトは1つの特定のタスクに集中できます。これにより、アプリケーションの構造が簡素化され、1つのコードを簡単に見つけることができます。たとえば、次の目的でさまざまなDLL(.NETプロジェクト)を使用するGUIアプリケーションがあるとします。

  • 特定のネットワークプロトコルでの作業
  • ユーティリティクラスなどの一般的なコードへのアクセス
  • レガシーコードへのアクセス(PInvoke経由)
  • 等...
于 2010-07-06T13:57:19.197 に答える