首页 > 解决方案 > 命名空间名称和模型冲突

问题描述

根据微软指南

X 不要为命名空间和该命名空间中的类型使用相同的名称。

遵循该规则感觉是强制性的,但并不那么容易。为了演示我的问题,让我们采用一个通用Account功能。假设有一个Accountwhich 是具有一些附加功能的抽象基础,例如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结构,因此仅为模型创建新文件夹/命名空间不是一种选择。

标签: c#namespacesnaming-conventions

解决方案


这些指南实际上被称为“框架设计指南”。它们旨在供编写库供他人使用的人使用。它们是指导方针,并不要求您遵循它们。它们基本上明确了您的代码的用户会期望什么,而不是您必须做什么。

在您链接到的同一页面上是指南“考虑在适当的情况下使用复数命名空间名称”。之后将解决您的大部分问题。

StyleCop 有一个指导方针,即不要创建少于五种类型的命名空间。

您可以通过调用命名空间帐户并将所有类放入其中来解决您的特定问题。只有在增加价值时才添加新的命名空间。


推荐阅读