web-dev-qa-db-ja.com

神の名前空間は神のオブジェクトと同じくらい悪いですか?

約3/4の異なるプロジェクトがあり、それぞれが特定のレベルのデータを共有しています。一部のデータは共有されませんが、すべてのデータアクセスは、すべてのプロジェクトに含まれる単一の名前空間になりました。

ユーティリティメソッドやその他の「共有機能」は、このルート名前空間に継続的に追加され、最終的にはかなり整理されますが、プロジェクトに含まれる単一のdllになります。

私にはそれは過度に集中化されているように見えますが、それは神の名前空間にラベルを付ける資格がありますか? (その用語は意味がありますか?)

6
jondavidjohn

God ObjectSuper Objectほど悪くはないでしょう。これらはまったく別の動物であり、作成、保守、デバッグ、およびテストが困難であり、絶対に避ける必要があります。

名前空間に関する限り、それは間違いなく正当な懸念事項であり、最終的に名前空間が過密状態になっている場合は、意味のある境界を越えて名前空間を分割しても問題はありません。

だから、あなたのタイトルの質問に答えるには:no

名前空間を追加する必要がありますか? コードの記述と保守が容易になる場合のみ

この答えはやや一般的ですが、詳細がなければもっと助けになるかどうかはわかりません。

7
Robert Greiner

はい、いいえの質問は1つもないと思いますが、最終的に「神」になるものは良い兆候ではありません。使用している言語の詳細は提供しませんが、IMHOがすべてを単一の名前空間に配置することは、C++のusing namespace stdと同じくらい悪いことです。一般に、 名前空間の汚染 を回避するようにしてください。 c2.com で、単一/複数の名前空間の長所/短所に関するいくつかの引数を見つけることができます。

0
sakisk