1


0

名前空間番号/長さ/スコープの支配について心配する必要がありますか?

最近、進行中のソリューションを24のプロジェクトから4に再編成しました。

「メイン」プロジェクトで大量のファイルを整理するために、物事はフォルダー内のフォルダー内のフォルダー内にあります。 ソリューションのコンテンツの論理的で発見可能な配置を保持していると思います。

その結果、もちろん、* AppName.DataAccess.NHibernate.Fluent.Mappings。*のような名前空間になります。

プロジェクトの階層構造がやや深くネストされている場合、ネームスペース階層をフラット化することに注意する必要がある理由はありますか?

(ディレクティブの解決や管理については気にしません。_ディレクティブを使用します。ここでは、ReSharperにすべての面倒な作業を任せます。)

2 Answer


4


それを行うための明確なメンテナンスの利点がある場合にのみ、フラット化します。

名前空間は、組織の目的により適していて、名前の競合を減らすのに役立ちます。 私は自分の名前空間を.NET Frameworkや他の主要なライブラリ名前空間とインラインに保つ傾向があります。 これにより、他の人がクラスを見つけやすくなります。 (あなたが言うように、発見可能な配置。)たとえば、私のパスユーティリティはMissico.IO.Pathの下にあり、データアクセスライブラリはMissico.Dataの下にあり、アプリケーションのデータアクセスはAppName.DataManager(Missico.Dataおよび他のすべてのデータを使用します)名前空間)。

ルート名前空間では、常に姓または会社名を使用します。 (どの名詞でも可能です。)これにより、ユーザー(プログラマー)は、ソースコードの単純な名前変更またはライブラリ参照のエイリアスの使用により、名前の競合を簡単に解決できます。

using Company = Missico;
String x = Company.IO.Path.CommonPath("", "");

名前空間ごとにフォルダーを保持しようとしています。 名前空間がネストされている場合、フォルダーをネストします。 これは、名前空間の構造に精通しているため、私や他の人がソースコードをすばやく見つけるのに役立ちます。 なぜ彼らに2つの構造を学ばせるのか。 各フォルダーには、複雑なクラスを除き、その名前空間のすべてのソースファイルが含まれます。 そこには独自のサブフォルダーがあります(名前空間を変更せずに)。複雑なクラスとサポートクラス用の4つまたは5つのサブフォルダーを含む名前空間フォルダーになります。

System名前空間を定義するとあらゆる種類のトラブルが発生するため、Coreを「システム/グローバル」名前空間として使用していることに注意してください。


0


意味のある名前空間名で小さな再利用可能なクラスを利用できるようにすることを常に心がけてきました。 したがって、私の答えは「いいえ」です。名前空間の階層を縮小しようとしないでください。