C#中的命名空间

3

我是一个ASP.NET MVC项目的使用者,每次我将一个类添加到文件夹中时,它会生成非常长的命名空间。

举例

Project = Tully.Saps.Data  
Folder = DataAccess/Interfaces  
Namespace = Tully.Saps.Data.DataAccess.Interfaces

Folder = DataAccess/MbNetRepositories  
Namespace = Tully.Saps.Data.DataAccess.MbNetRepositories

问题:
在这个项目中,是最好不要改变命名空间,而是在访问它的类中添加using语句,还是将命名空间更改为Tully.Saps.Data?

6个回答

1

别管它们,添加using语句。手动更改这样的东西会带来麻烦(更难调试,与其他项目不一致等)。


0

你可以自行决定如何处理它。如果你只需要访问命名空间的成员一两次,那么添加 "using" 语句对你来说并没有太大的帮助。

如果你要多次使用它,那么缩短命名空间链可能会使阅读更容易。

如果你只是想逻辑上将文件组合在一起而不创建新的命名空间,你也可以更改命名空间,以便它不添加新的文件夹名称。


0
根据FXCop的建议,我也同意:
避免只有少量类型的命名空间 一个命名空间通常应该有超过五个类型。
此外(这也适用于“单一命名空间”建议——几乎等同于没有命名空间):
在命名空间中声明类型 为了避免重复定义,类型应该在命名空间内定义。

0
  • 命名空间

命名空间帮助我们定义对象模型或应用程序中一组实体的“范围”。这使它们成为软件设计决策而不是文件夹结构决策。例如,在MVC应用程序中,具有Model/View/Controller文件夹和相关命名空间将是一个很好的选择。因此,虽然在某些情况下,文件夹结构可能与我们在开发中决定使用的命名空间模式匹配,但这并非必需,也可能不是我们所期望的。每个命名空间都应该是一个逐案例的决策。

  • using语句

为命名空间定义using语句是一项单独的决策,基于代码中引用该命名空间中的对象的频率,并且不应以任何方式影响我们的命名空间创建实践。


0

算了吧,这是一个很好的例子,说明你的IDE正在决定你的编码风格。


0

仅仅因为你使用的工具(Visual Studio)决定每个文件夹都需要一个新的命名空间,就不代表你必须这么做。
我个人倾向于将我的“数据”项目留作单一的命名空间。如果我有一个名为“Model”的子文件夹,我不想让那些文件在Something.Data.Model命名空间中,而是想放在Something.Data命名空间下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接