C# 名称空间的名称和模型冲突
X中的命名空间和类型不使用相同的名称 命名空间 遵守这条规则感觉是强制性的,但不是那么容易。为了演示我的问题,让我们使用一个通用的C# 名称空间的名称和模型冲突,c#,namespaces,naming-conventions,C#,Namespaces,Naming Conventions,X中的命名空间和类型不使用相同的名称 命名空间 遵守这条规则感觉是强制性的,但不是那么容易。为了演示我的问题,让我们使用一个通用的帐户功能。假设有一个帐户,它是抽象的基础,具有一些附加功能,如收件箱,以及两个实现用户和设备。当然,它的每一个底片都需要一些型号 Account +--- Account.cs +--- AccountController.cs +--- Inbox | +--- Inbox.cs | +--- InboxController.cs |
帐户
功能。假设有一个帐户
,它是抽象的基础,具有一些附加功能,如收件箱
,以及两个实现用户
和设备
。当然,它的每一个底片都需要一些型号
Account
+--- Account.cs
+--- AccountController.cs
+--- Inbox
| +--- Inbox.cs
| +--- InboxController.cs
| \--- Message.cs
+--- Device
| +--- Device.cs
| \--- DeviceController.cs
+--- User
+--- User.cs
\--- DeviceController.cs
该结构显然在名称空间(文件夹名称)和类(模型名称)之间存在命名冲突。我可以通过将主要功能帐户
的名称更改为类似标识
的更花哨的名称来轻松解决第一个冲突,但这仍然留下了另外两个(用户
和设备
)冲突未解决。我是否总是需要为每个功能找到“更好的花式名称”来避免这个问题
请记住,我希望按功能遵循文件夹,因此仅为模型创建新文件夹/名称空间不是一个选项。这些指导原则实际上被称为“框架设计指导原则”。它们旨在供编写库供他人使用的人使用。它们是指导原则,不要求您遵循它们。它们本质上明确了代码用户的期望,而不是您必须做什么 在您链接到的同一页上有一条指导原则“在适当的情况下考虑使用复数名称空间名称”。这样做可以解决你的大部分问题 StyleCop有一个指导原则,即不要创建少于五种类型的名称空间
您的特定问题可以通过调用名称空间帐户并将您的所有类放在其中来解决。只有在增加价值的情况下才添加新名称空间。为什么不将它们称为AccountModel.cs、InboxModel.cs等。这些准则不是规则,如果有充分的理由,你可以打破它们。但是请注意,它们的存在是有原因的,破坏它们可能会导致团队中的混乱。更改名称空间的名称(文件夹)怎么样,比如:AccountDir--InboxDir--UserDir???@kamentk,这是有道理的,但我个人觉得这会有点混乱。名称本身(例如
User
)大声叫喊它是一个模型,给它添加后缀感觉不必要和烦人。此外,我还没有看到很多这样的项目。因此,必须有一个替代的解决方案。只需对名称空间使用复数命名:然后用户类是MyApplication.Accounts.Users.User
,这在Accounts
名称空间中是有意义的。但是设备
感觉有违直觉。只有一个设备
而不是设备
。但这是目前为止最好的建议。StyleCop感觉也是一个很好的解决方案。。。但是当你从帐户
和用户
或设备
之间的关系是片面的,因此将其放在一个文件中感觉是错误的。这是一个更强大、更广泛的规则,请阅读