私が理解しているように、global::
修飾子を使用すると、同じ名前の別の名前空間に隠された名前空間にアクセスすることができます。 MSDN pageは、例としてSystem
を使用しています。独自の名前空間System
を作成した場合は、元にはglobal::System
という名前を付けることができます。まず頭に浮かんだことは、誰が名前空間をSystem
と呼ぶのですか?このページは明らかに推奨されていませんが、大きなプロジェクトでは名前空間の重複は非常に可能です。これが起こったときに、物事が間違った方向に向いているというサインか、衝突する名前空間を持つ有効な理由がありますか?対処する名前空間にglobal ::を使用する
答えて
名前空間が競合する正当な理由の1つは、以前のバージョンの.Net用に作成された社内ライブラリの使用で、それ以降のバージョンで追加された機能は含まれていない可能性があります。たとえば、.Net 1.1日間に、APIレジストリ呼び出しをラップしたRegistryクラスを作成しました。純粋なチャンスで、私が選んだメソッド名は、.Net Registryクラスのメソッド名とまったく同じで、まったく同じことをしたので、私の自宅のコードを簡単に外すことができました。より複雑なものについては、修飾子がglobal::
の古いコードを使用すると便利です。
既存の.Net名前空間を使用して意図的に新しいコードを命名することは、間違いなくコードの匂いになります。
一般に、global::
は、「名前空間構造の先頭から始めたい」という意味で使用されます。 MyProduct.System
という名前空間がある場合、MyProduct
名前空間に存在するものは、Microsoft System
名前空間にアクセスすることはできません。それはコードのにおいですか?たぶん時々、しかし特に臭いではありません。
マシン生成コードでは、認識しない名前空間の競合の可能性を最小限に抑えるため、global::
を試してみる必要があります。さらに、コンフリクトを起こす可能性のあるコードは、より具体的に使用することができます。
あなたの名前空間の1つに別の名前があることが時々起こると思います。たとえば、私は名前空間.Persistence.NHibernateを持っています。ここで、NHibernateはNHibernateアセンブリのルート名前空間でもあります。
私はそれだけでisses命名だ、ここで任意のコードのにおいが表示されません。)
Microsoftは優秀な本Framework Design Guidelines 2nd Ed.
でいくつかの良い名前空間のガイドラインを持っています。一般的には、コンフリクトを導入することを推奨します(たとえば、タイプStreamの名前を付けるなど)。
私はglobal ::修飾子を使用したことはないと思います。私は一般的にそれがコードのにおいであると考えています(例外はありますが、MusiGenesisとsixlettervariablesが指摘しています)。
- 1. 名前空間に名前の変数を使用する
- 2. VB.netで使用する名前空間。
- 3. 名前空間名に変数tclを使用する
- 4. 名前空間にあるXMLの要素を処理する
- 5. XmlPullParserを使用したXml名前空間の処理
- 6. 間違った名前空間を使用するコード
- 7. 相対的な名前空間とcall_user_func()
- 8. Asp.Net c#プロジェクトで名前空間を使用するには?
- 9. html要素に複数の名前空間を使用する
- 10. 名前空間がlaravelにないベンダーを使用する5.3
- 11. PHPで名前空間を使用するには?
- 12. モデルに名前空間を使用するときのActiveModel :: MissingAttributeError
- 13. OUプロパティの列挙にS.DS.ActiveDirectory名前空間を使用する
- 14. ROSで名前空間を使用するには?
- 15. 私の名前空間にライブラリを使用する
- 16. PHP - PSR-4オートローディングコンポーザーの名前空間付きファイルの名前空間を使用
- 17. 名前空間を使用するXElementを追加します。
- 18. イニシャライザリストの名前空間を使用
- 19. typescriptの相対名前空間?
- 20. JsonPathで名前空間でJSONを処理する方法
- 21. TypeNameHandling.Allで名前空間を変更する処理
- 22. 名前空間を使用する利点は何ですか?
- 23. 異なる名前空間から名前空間のリソースを作成する
- 24. XPathを使用してデフォルトの名前空間(名前空間接頭辞なし)を取得する
- 25. 他の名前空間内の名前空間からの関数の使用
- 26. 名前空間(gml)を使用してXMLを解析する
- 27. ある名前空間を別の名前空間に置き換える
- 28. 名前空間
- 29. 名前空間
- 30. XML上の名前空間の使用
コードの臭いはありますか? :p –
@rpflo:おそらく彼は "これは深刻なコードのにおいですか?" –
良いコードとは対照的に、ライラックのようなにおいがします。 :) –