web-dev-qa-db-ja.com

単一のプロジェクト内の名前空間は境界として機能する必要がありますか?

複数の名前空間を含む単一のプロジェクト内で作業する場合、これらの名前空間を境界として扱う必要がありますか?または、任意の名前空間が他の名前空間にアクセスできることは許容されますか?

たとえば、Physicsというプロジェクトに次の名前空間があるとします。

  • Physics.Models
  • Physics.Math

この場合、一部のモデルはMathで定義されたクラスを使用し、MathはModelsで定義されたクラスを使用するとします。これは許容できる解決策ですか?依存関係を示す名前空間名に何らかの階層が必要ですか?何かのようなもの

  • Physics.Math
  • Physics.Math.Models

従うべきルールはありますか?それとも、これは開発者に任されて、単一のプロジェクト内の関係について賢明で実用的な決定を下すのでしょうか?

2
Jason Tyler

簡単に言うと、言語自体は名前空間の処理方法を気にしないという事実が示すように、ルールはなく、開発者次第です。

そうは言っても、名前空間を分割する方法は、名前空間を使用する場合でも、プロジェクトの残りの部分を分割する方法に依存し、あなた(およびチーム)が決定することがそれに対処するための最良の方法です。あなたの例では、名前空間内のアイテムの使用をよりよく伝えるため、私は個人的に最初のアプローチを採用しますが、それは私にとってであり、他の誰かが名前空間の命名法を見る方法ではない可能性があります。

tl; drいいえ、言語は関係ありません。それはあなたが自分でしなければならない文体の選択です

4
TurtleKwitty