クラスは名前空間と同じ名前を持つべきですか?
-
05-07-2019 - |
質問
複数の異なるアプリケーションの user 関連タスクを処理するクラスのセットを保持する名前空間を設計しています。 (ログイン、認証など)
問題は、名前空間が Fusion.User
と呼ばれることですが、その名前空間には User
を呼び出す意味のあるクラスが必要です。
名前空間と同じ名前のクラスが必要ですか?または、私はここで間違ったアプローチを取っていますか?
解決
名前空間(パッケージ)と同じ方法でクラスに名前を付けると、クラスがパッケージの中心であると考えられる場合があります。しかし、正しく取得できれば、ユーザーはあなたの場合の単なるデータオブジェクトです。
私が見る限り、2つのオプションがあります:
- 名前空間に別の名前を付ける(例: Fusion.Security
- クラス名にその目的を示す接尾辞を使用します。 UserDTO、UserActionなど。
他のヒント
名前空間は Fusion.User です
クラスのフルネームは Fusion.User.User
- 開発者への混乱を避ける
-
また、ここでは2人のユーザーを使用しているように、場合によっては見苦しくなります。
using Fusion;
namespace xyz {
public class test
{
User.User userObject {get; set;}
}
}
したがって、より良いオプションは、異なる名前を使用することです
同じ名前を使用すると問題が発生する場合があります。すぐに思い浮かぶのは、WCFサービスを使用するときです。 「someBehaviour」というクラスで最近これをやったとき名前空間で" companyName.someBehaviour" 「MyService」を使用するために、コンパイラはMyServiceがsomeBehaviour名前空間内に存在しないと言った。クラス名を別の(そして非常に便利な)名前に変更することで問題が解決し、アセンブリをコンパイルできるようになりました。
混乱を避けるために、おそらく名前空間を「usertasks」と呼びます。コンパイラを混乱させないために、名前空間を定期的に使用して内部クラスを修飾する必要があります。