web-dev-qa-db-ja.com

例外のためだけに別の名前空間?

コードレビューを行っていて、今まで見たことのない奇妙なことに遭遇しました。開発者は、アセンブリのすべての例外を含めるためだけにサブ名前空間を作成することを決定しました。

これは明示的に名前空間の適切な使用法ではなく、例外はスローされる「最も低い」名前空間に保持する必要があることを読んだと思っていましたが、MSDN(またはそのほかの場所)には何も見つかりませんでした。 。同時に、私がこれまでフレームワーク自体や私が使用したサードパーティのライブラリでこれに遭遇したことがないのは奇妙に思えます。

すべての例外を.Exceptionsサブ名前空間に保持しないようにするガイドラインはありますか?

7
Andy

名前空間を使用する2つの主な理由は、名前の衝突を回避する論理グループを追加することです。ただし、例外クラスの名前は通常「XYZException」の形式になっている(そして他のクラスにはない)ため、これらの2つの要件はこの命名規則によってすでに満たされています。したがって、誰もが慣習に従っているコンテキストでは、追加のサブ名前空間を追加する必要はありません。それはすでに解決されている問題を解決しようとし、コードに不必要な複雑さを追加します。

さらに、私の経験では、技術的なグループ化ではなく、ドメインの側面でのパーティショニングに名前空間を使用する方が良いでしょう。例外クラスをサブ名前空間に配置し始めると、次の決定は、すべてのenumsを独自のサブ名前空間に配置し、次にすべてのヘルパー構造体を配置することなどです。実際、これによってコードがわかりやすくなったり、ナビゲートしやすくなったりすることはないと思うので、コードが役立つとは思いません。

24
Doc Brown