2013-12-09 221 views
0

不确定这是否遵循规则,但我需要一些与名称有关的帮助。我应该如何处理项目名称vs命名空间vs类。例如,我想制作一个datacleaner程序。所以我将它命名为Datacleaner,然后将其命名为DC,然后将Cleaner.cs命名为文件名,这只会让人感到困惑。有什么最佳做法,我可以在这里跟随!?有用的心态或命名理论会非常有帮助。c中的命名约定#

+5

项目名称和命名空间的名称一般应为相同的名称,如要把文件名和类班级名称。 – SLaks

+0

[c#中的命名约定]的可能重复(http://stackoverflow.com/questions/1618316/naming-convention-in-c-sharp) –

回答

2

这是稍微偏离主题,但我给你在这里拍摄。

我们需要看的第一件事是根名称空间。根据你在做什么,这个根名字空间可以在多个项目中共享。一个很好的例子是System。你可能会把你的公司名称放在那里,或者你可能选择一些更具折衷性的东西。如果我正在编写库代码,则避免使用诸如DataCleaner之类的东西,因为库应该是通用的并且不涉及常见的表单。

所以,你正在写一个数据清理器。大!有一个共同的图书馆并有一个Data命名空间(也许你希望将来添加更多与数据相关的东西)没有错,然后你有你的Cleaner类。

如果我是您的API的用户,我很乐意明白<library>.Data是一个命名空间,我需要寻找Cleaner

2

您应该Mike Roberts'系列如何设置.Net开发树。这有点过时,但概念仍然成立。他的文章的链接在我的答案在这里:https://stackoverflow.com/a/9982500/467473(他似乎重新安排他的博客,并打破其中的链接,虽然内容仍然存在)。另请参阅Tree Surgeon,这是一种使用Mike Roberts所倡导的原则创建解决方案的工具。

概括地说,正是如此铺陈的源代码树:

从根本上说,你的目录结构应该是这样的:

  • Meta/Development Root
    通常映射到源代码控制系统的根目录。
    • Solution
      一个目录包含您的整个解决方案。应该命名为匹配解决方案。
      • Solution.sln
        解决方案文件本身。
      • nant.build
        解决方案的nAnt构建文件。
      • lib
        lib目录包含由解决方案中不同项目引用的第三方程序集/ dll。它受源代码控制。项目参考应该指向这里。
      • tools
        tools目录包含构建解决方案所需的所有第三方工具。它也在源代码控制之下。该tools目录应该包含你的项目—和构建脚本应该引用这些,而不是安装在开发机器上的版本(S)使用nAntnUnit等的版本。
      • bin
        bin目录包含解决方案的构建过程的输出。每个项目必须配置为指向此处。
        • debug
          调试版本
        • release
          发布版本
      • obj
        在理想世界中,每个项目的obj将在这里指出,以及该在源树的地方。可悲的是,Visual Studio并没有提供这样的官方方式(尽管我被告知,如果足够足够的话,VS可能会被黑客攻击)。
      • src
        src目录是解决方案实际源代码的根目录。
        • project1
          project1的目录。
          • project .csproj`
            该项目文件。
          • *.cs等文件。源文件。
        • ...
        • project-n

src目录包含实际的源代码。每个项目都应该用完整的命名空间命名。无论是将它们放在平面上还是构建文件系统中的整个名称空间结构,都取决于您。这个想法是命名空间应该引导你到源文件。

0

这里其他的答案是对所有专为C#你可能要遵循的命名约定提出由微软(和默认情况下自动使用,如果你正在使用Visual Studio开发),除非你有一个令人信服的理由不。

项目命名空间应匹配的项目名称或应该与一些标准化的前缀匹配预谋的项目名称。

约定类文件,每个文件1类和文件名称应与类名。

你被禁止给名字命名,因为它的命名空间,我认为是你遇到的问题提示这个问题。解决方案可能会给该项目一个更通用的名称。

给出我们在哪里工作的更具体的例子。

我们在这里生产的任何产品通常都有一个包含两个或更多项目的解决方案。 任何项目的默认名称空间如下所示:...

如果DataCleaner产品具有处理相同域的Windows服务和命令行工具,则可能有三个项目:控制台,服务和具有名称空间的域的

Company.Team.DataCleaner.Console 
Company.Team.DataCleaner.Service 
Company.Team.DataCleaner.Domain 

对于类命名(通过扩展它们驻留在文件),如果你按照上面的方案,您已经有所避开你DataCleaner命名空间有DataCleaner类的问题,但你会发现应用Single Responsibility Principle有用。简而言之,任何阶级都应该只做一件事。如果你有一个名为CleanerDataCleaner他们可能会试图做太多,打破它会导致具体到所得到的类