2011-10-29 8 views
4

私は新しいC#.NET Windowsアプリケーションと同じWebアプリケーションで使用されるエンタープライズアプリケーションを作成するチームの一員として働いています。他の開発者の1人は、Iを少し上回る別々のプロジェクトに分けたいと思っています。彼の答えは、常に私が私が同意しているかどうかわからない「別々の懸念」です。コードを新しいアセンブリ(DLL)に分割する場合

私の理論では、他のコンシューマーがそのコードを共有できるときに別のアセンブリを作成します。懸念の分離は、名前空間で処理する必要があります。バージョニング、難読化などの多数のアセンブリを含むアプリケーションを配布する追加の努力/挑戦/悪夢となる可能性があるので、私には懸念があります。コードが壊れているときの経験則が何であるかを調べようとしていますそれ自身のアセンブリに引き出します。

アプリケーション内で名前空間やその他の組織テクニックを使用するのと比べて、コードを他のアセンブリに分ける際の経験則は何ですか?このパターンや習慣に関するガイダンスは、「ええ、彼は正しい」とか「これを読んでください」と言うことができます。

ありがとうございます。

+1

コーディングを開始する前に最初に設計する。 –

答えて

4

私はコミュニケーション上の問題があると思います。つまり、懸念の分離は一般的に何か違う意味があるため、命名法に問題があると思います。

厳密に言えば、懸念の分離、単一責任の原則のようなものの扱い、それで各クラスはそれ自身のドメインを取り扱うことになります。単一の責任の原則は、クラスは変更する理由が1つだけあるべきだと述べています。

MVCやMVVMなどのビューとモデルの抽象パターンは、懸念事項の分離の例です。ビューまたはモデルである各コンポーネントは、ユーザーインターフェイスの抽象化またはデータと検証を処理しますが、両方を処理するわけではありません。

コードを別々のアセンブリに分割することは、複数のプロジェクト間でコードを共有できる場合(自分が既に指摘したように)には良い方法です。単純にコードを構造化するには、異なる名前空間を使用します。

コードがたくさんある場合、アセンブリはコードをグループ化する自然な方法であり、異なるレベルでコードを管理し、非常に拡張性の高いポイントを管理し、そのレベルをロックしたい場合、アセンブリはそのレベルの分離を提供します。

+0

懸念事項の分離は、アセンブリとは無関係ですが、代わりにどのクラスにどのコードを記述するかに関係しています。配信単位(dllとexes)の構成方法は、いくつかの目的(インストールの容易さ、共通オブジェクトの共有)に基づいて行われ、他のタスクと同様に分析、設計、実装されます。ネームスペースの使用は、アプリケーションコードが配信単位をほとんど認識しないようにするのに役立ちます。 – tcarvin

1

私の経験則は、他のアプリケーションがそのDLLを使用できる場合は、まず、さまざまなコードライブラリのコードを常に分離することです。

私のもう一つの考慮点はバージョン管理です。コードのグループ化が頻繁に改善される場合、私にはそれを別々のDLLとして持つ方が簡単です。したがって、プロジェクト内の他のDLL/exeは、呼び出しが変更されない限り変更に全く無知です。

私はこれらがコードを別のDLLに分ける主な理由だと思います。

3

Shark(すでに大規模なアプリケーションで使用されている選択されたアセンブリのバージョン管理、および再コンパイル/置換)によって既に提供されている理由によるものです。しかし、私はアセンブリを作成する傾向があるので、独立して有用で完全なコードユニットを作成します。

たとえば、大規模なアプリケーションで使用するために、HTMLを解析するための解析ユニットを作成している可能性があります(私が知っているのは愚かなことです)。 HTMLParsingUnitの機能が比較的完了している(つまり、大きなアプリケーションに固有のものではない)場合は、他のコードで再利用するために、またバージョン/変更をカプセル化するために、独自のアセンブリでこれを作成します。

同様に、マッピングを作成し、ASNI SQLから.NET CLR型へのDataTypesのクラスを提供しなければなりませんでした。私は他のプロジェクトで便利かもしれないと思ったので、私はこれのための独立したDLLを作成しました。明らかに、そうすることは、アセンブリのコンポーネントを一般的に抽象化することを意味しましたが、これによって保守が容易になりました。最終的に、私はいくつかの異なるプロジェクトでこのアセンブリを再利用しました。

ちょうど私の2セントです。 。 。

関連する問題