最近、中規模のアプリケーションをリファクタリングしました。仕事の1つは、一般的に使用されるコードをさまざまなプロジェクトに分割することでした。
さて、一般的に使用される名前空間構造は
Core.Interfaces
-のインターフェイスを持つメインアプリケーションの場合IFoo
そして、それぞれの特殊な/外部の/参照されたアセンブリについて、私はそれを拡張することにしました。
Core.Interfaces.Html
のインターフェースでIBar
メインアプリケーションのCore
アセンブリはCore
、デフォルトの名前空間で名前が付けられたプロジェクトにありますCore
が、Html
アセンブリHtmlCore
では、デフォルトの名前空間で名前が付けられたプロジェクトを作成しましたCore
。
結果の効果(および私がこの特定の方法論を選択した理由)は、Html
アセンブリを参照した後は、using
ステートメントを更新する必要がなく、正味の効果は次のようになることです。
Core.Interfaces.IFoo fooIf;
Core.Interfaces.Html.IBar barIf;
または上記のusingステートメントを使用して次Core.Interfaces
のように変換されます
IFoo fooIf;
Html.IBar barIf;
この暗黙の名前空間構造は依存関係の直接の結果であり、プロジェクトの名前空間の保守がはるかに簡単になり、誰かが持っている必要があるのはアセンブリへの参照だけであるため、実際に役立ちました。構造は、Microsoftが.netフレームワークですでに行っているものと似ています。
問題は、私には考え直しがあり、(将来のプロジェクトのために)次のような各アセンブリに対して明示的な名前空間構造を検討しているということです。
Core.DataInterfaces
Html.Core.DataInterfaces
それで、誰かが明示的な構造で作業したことがありますか、両方、または私が試したことのない何か他のものでさえありますか?私は提案を受け入れており、開発中のチームのメンテナンスや混乱から時間を解放することが目標であるため、最善の解決策を探しています。