アセンブリの分け方
の規則を徹底しようと思っています。
そこで、皆さんは実際どうしているのかを聞いてみたくなりました。
例えば、マスターと実データの二つのデータ編集ツールがあって、これらのツールは一つのアプリケーションとして関連性が高いとします。
このような時、最初は以下のように分けていました。
R.Main
R.Widows.Forms
R.Model
R.Data
各アセンブリが何をするのかは名前の通りなので言及しませんが、このような分類だと参照するアセンブリの依存関係も綺麗に縦割りになります。
しかし、最近は、マスターと実データという機能別にアセンブリを分離する方が、分かりやすいし処理効率が良いのではないかということで、これも実践しています。
R.Main
R.RealData
R.Master
このように分類しておくと、アプリケーションが肥大化するほどに、利点が大きくなります。
例えば、印刷と環境設定画面の 2 つの機能を追加してみます。
R.Main
R.RealData
R.Master
R.Print
R.Config
上記のように機能が追加された時、アセンブリ単位で分類できていれば管理も楽ですし、印刷や環境設定など利用する可能性の低い機能が分離されていることで処理効率も高くなるであろうことが予想されるからです。
そこで、最近は以下のようにアセンブリを細かくしています。
R.Main
R.Widows.Forms
R.Model
R.Data
R.RealData
R.Master
上の 3 つは、R.RealData, R.Master で共通して利用するアセンブリで依存関係は以下のようになります。
R.Main
R.RealData
R.Widows.Forms
R.Model
R.Data
R.Master
R.Widows.Forms
R.Model
R.Data
小さいアプリケーションは、ひとつのアセンブリにまとめてしまうのですが、結局は後で分離することが多いので今後は最初から分けてしまうかと思っています。