c# - 命名空间名称和模型冲突
问题描述
X 不要为命名空间和该命名空间中的类型使用相同的名称。
遵循该规则感觉是强制性的,但并不那么容易。为了演示我的问题,让我们采用一个通用Account
功能。假设有一个Account
which 是具有一些附加功能的抽象基础,例如Inbox
两个实现User
和Device
. 当然,它的每一个不足之处都需要一些模型。
Account
+--- Account.cs
+--- AccountController.cs
+--- Inbox
| +--- Inbox.cs
| +--- InboxController.cs
| \--- Message.cs
+--- Device
| +--- Device.cs
| \--- DeviceController.cs
+--- User
+--- User.cs
\--- DeviceController.cs
该结构显然在命名空间(文件夹名称)和类(模型名称)之间存在命名冲突。Account
我可以通过将主要功能的名称更改为更花哨的名称来轻松解决第一个冲突,Identity
但这仍然导致其他两个 (User
和Devices
) 冲突未解决。我是否总是需要为每个功能找到“更好的名字”以避免这个问题?
请记住,我想遵循folder-by-feature
结构,因此仅为模型创建新文件夹/命名空间不是一种选择。
解决方案
这些指南实际上被称为“框架设计指南”。它们旨在供编写库供他人使用的人使用。它们是指导方针,并不要求您遵循它们。它们基本上明确了您的代码的用户会期望什么,而不是您必须做什么。
在您链接到的同一页面上是指南“考虑在适当的情况下使用复数命名空间名称”。之后将解决您的大部分问题。
StyleCop 有一个指导方针,即不要创建少于五种类型的命名空间。
您可以通过调用命名空间帐户并将所有类放入其中来解决您的特定问题。只有在增加价值时才添加新的命名空间。
推荐阅读
- vba - 在 Visual Studios 中更新数据库时出现语法错误
- azure-devops - 如何使用/重新映射 Azure KeyVault 机密作为 Azure DevOps Pipeline 环境变量?
- javascript - 如何仅使用 bootstrap 和 angular 以及 springboot 作为后端来创建模态值列表?
- laravel - 如何将原始名称的文件保存在公用文件夹中
- java - 将 json 日期解析为特定日期格式
- docker - 有没有办法从 docker 容器运行“pkexec”?
- sql - 如何添加根据一组条件变化的折扣列?
- java - 使用 Micronaut 和 GraalVM 创建 AWS Lambda 函数的问题
- elixir - 在单个事务中插入与给定模式建立关联的外键
- string - 如何在字符串中找到得分最高的单词?