命名空间的名称和模型冲突

时间:2018-09-27 08:31:53

标签: c# namespaces naming-conventions

According to Microsoft guidelines

  

X请勿对名称空间和类型使用相同的名称   命名空间。

遵循该规则是强制性的,但并不是那么容易。为了演示我的问题,让我们采用通用的Account功能。假设有一个Account,它是抽象基础,具有一些Inbox之类的附加功能以及两个实现UserDevice。当然,每个学习不足的人都需要一些模型。

Account
+--- Account.cs
+--- AccountController.cs
+--- Inbox
|        +--- Inbox.cs
|        +--- InboxController.cs
|         \--- Message.cs
+--- Device
|       +--- Device.cs
|        \--- DeviceController.cs
+--- User
        +--- User.cs
         \--- DeviceController.cs

该结构显然在名称空间(文件夹名称)和类(模型名称)之间存在命名冲突。通过将主要特征Account的名称更改为更像Identity的名称,我可以轻松解决第一个冲突,但是仍然无法解决另外两个(UserDevices)冲突。为避免出现此问题,我是否总是需要为每个功能都找到“更好的名称”吗?

请记住,我想遵循folder-by-feature的结构,因此不能仅为模型创建新的文件夹/命名空间。

1 个答案:

答案 0 :(得分:0)

该准则实际上称为“框架设计准则”。它们旨在供编写库供他人使用的人使用。它们是准则,不需要您遵循它们。它们本质上明确了代码用户的期望,而不是必须要做的。

在链接到的同一页面上的准则是“考虑在适当的地方使用复数名称空间名称”。这样可以解决您的大多数问题。

StyleCop的指导原则是不要创建名称空间少于五个的类型。

可以通过调用命名空间帐户并将所有类放在其中来解决您的特定问题。仅在增加值的情况下添加新的名称空间。