我有一个存储源文件的目录结构。这是一个很好的做法 根据目录结构命名命名空间?
像
Models\model.cs
Data\data.cs
一个在名称空间模型中定义 一个在名称空间数据
中定义答案 0 :(得分:6)
是的,这是典型的方法,也是ReSharper等工具支持的方法。
这种与Java方法的区别在于,您不会从顶部向下添加目录 - 只是从项目的默认命名空间。例如,假设我们正在创建Foo.Bar.Baz.Model和Foo.Bar.Baz.Data,C#和java解决方案可能是:
<强> C#:强>
Foo.Bar.Baz
Foo.Bar.Baz.csproj defining a project with default namespace of Foo.Bar.Baz
Model\
SomeModel.cs
Data\
SomeData.cs
<强>爪哇:强>
src\
foo\
bar\
baz\
model\
SomeModel.java
data\
SomeData.java
答案 1 :(得分:0)
是通常的做法,但您也将项目名称放在目录名称之前,因此您将拥有:myclasslibraryname.Models.Model和myclasslibraryname.Data.Data
答案 2 :(得分:0)
是。这是Java中的常见做法(至少,我看过大型项目的源代码几乎总是以这种方式构建)。在我看到的C#中并不常见,但没有什么能阻止你这样做,它可以帮助你更快地找到代码。
你可能想要一个更深层的命名空间层次结构,而不仅仅是一个层次。通常在其前面加上您的组织或组名,项目名称,库/程序名称,然后是代码架构名称(如模型,视图,数据等)。无论你的项目的源代码在什么范围内都是最有意义的。
答案 3 :(得分:0)
一般来说,我认为这是一个很好的做法。当您以这种方式执行此操作时,在执行代码时,您通常可以关联或轻松查找并了解代码文件的来源。
这在维护代码方面也是一种很好的做法。一些新用户进来,他只能看到命名空间并识别代码文件的位置或需要搜索的位置。
答案 4 :(得分:0)
我真的不知道这是好还是不好。 但我这样命名。 我为不同的模块定义了类别。
像这样: Company.Common Company.Common.Web
Company.Windows Company.Windows.Services
Common表示目录。在里面我用VS2010创建了一个解决方案。 在解决方案中,我为每个部分创建了一个项目,因此项目的子目录也是如此,如果项目很复杂,那么dll中现有类的更多子目录。
我在所有视图中都有一个很好的概述(目录 - 视图和项目视图 - 代码视图)。
答案 5 :(得分:0)
这是许多项目的便捷惯例,也是一些工具支持或期望的项目。
但是,这不是完整的故事。虽然这是一个很好的默认,但我不认为它应该被视为不可侵犯的最佳实践,因为有些情况可能会激励以另一种方式做事。需要考虑的其他因素包括:
简而言之,我会说按照惯例,除非你有充分的理由不这样做。但是,如果你有充分的理由利用命名空间可以提供与它们的分组完全正交的类型分组到可部署程序集以及构建它们的源代码这一事实,那么不要让它阻止你。