c#中的命名约定

时间:2013-12-09 18:01:08

标签: c#

不确定这是否符合规则,但我需要一些名称帮助。我应该如何处理项目名称与命名空间和类。例如,我想制作一个datacleaner程序。所以我将它命名为Datacleaner,然后将DC命名为类,然后将Cleaner.cs命名为文件名,它就会让人感到困惑。我可以在这里找到一些最佳实践!?一个有用的心态或命名理论会非常有用。

5 个答案:

答案 0 :(得分:2)

Microsoft提供了一套出色的指南 - 请参阅下一个链接: Guidelines for Names 另请参阅Naming section

我想你会找到你需要的所有信息。

StackOverflow中已经提出过这个问题,请参阅here

答案 1 :(得分:2)

稍微偏离主题,但我会在这里给你一个机会。

我们需要关注的第一件事是根命名空间。根据您正在执行的操作,可以跨多个项目共享此根命名空间。一个很好的例子是System。你可以把你的公司名称放在那里,或者你可以选择更折衷的东西。如果我正在编写库代码,我会避免像DataCleaner这样的事情,因为库应该是通用的,不属于常见的形式。

所以,你正在写一个数据清理工具。大!拥有一个公共库并拥有Data命名空间(可能您希望将来添加更多与数据相关的内容),然后您拥有Cleaner类。

如果我是您的API用户,我很高兴地了解<library>.Data是一个命名空间,我需要寻找Cleaner

答案 2 :(得分: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目录应包含项目使用的nAntnUnit等版本 - 您的构建脚本应引用这些版本,而不是开发人员计算机上安装的版本
      • bin
        bin目录包含解决方案构建过程的输出。每个项目必须配置为指向此处。
        • debug
          debug build
        • release发布版
      • obj
        在理想世界中,每个项目的obj都会指向此处,而源树中没有这个位置。可悲的是,Visual Studio并没有提供官方的方式来做到这一点(不过,据我所知,如果你足够的资源,VS可以被黑客攻击)。
      • src
        src目录是解决方案实际源代码的根目录。
        • project1
          project1的目录。
          • project。csproj`
            项目文件。
          • *.cs等文件。源文件。
        • ...
        • project-n

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

答案 3 :(得分:1)

以下是来自另一个SO问题的惯例的简短摘要:

Naming Convention in c#

答案 4 :(得分:0)

此处的其他答案都是正确的,对于C#,您可能希望遵循Microsoft提出的命名约定(如果您使用Visual Studio进行开发,则默认情况下会自动使用),除非您有令人信服的理由不这样做。

项目名称空间应与项目名称匹配,或者应与项目名称匹配,前缀为一些标准化前缀。

类和文件的约定是每个文件1个类,文件名应该与类名匹配。

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

举一个更具体的例子说明我们在哪里工作。

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

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

的域
Company.Team.DataCleaner.Console 
Company.Team.DataCleaner.Service 
Company.Team.DataCleaner.Domain

对于类的命名(以及扩展它们所在的文件),如果你按照上面的方案,你已经解决了在DataCleaner命名空间中有DataCleaner类的问题,但是您可能会发现Single Responsibility Principle的应用很有用。简单地说,任何一个班级都应该只做一件事。如果您有一个名为CleanerDataCleaner的类,他们可能会尝试做太多,并且将其分解会导致特定于结果类的名称