【问题标题】:Is it best practice for a namespace to have the same name as the project in which it is found in? [closed]命名空间与它所在的项目同名是最佳实践吗? [关闭]
【发布时间】:2021-11-26 22:26:50
【问题描述】:

假设我的解决方案中有以下结构:

    MySolution -> ProjectA -> ClassA.cs

默认情况下,ProjectA 中第一个命名空间的名称是ProjectA

namespace ProjectA
{
    public class ClassA
    { 
        // body
    }
}

项目中第一个命名空间的名称是否最好/常见的做法是与其所在的项目同名?

或者我应该更改第一个命名空间的默认名称吗?

【问题讨论】:

  • 我不认为这是最好的做法,也不是坏的做法,但它似乎是一般做法,对小型项目或实践程序有用的做法(可能这就是为什么它是默认结构时在 VS2019 创建库或其他项目)。另外,请记住namespace(s) 的目的是帮助您保持代码井井有条并避免命名类冲突。只要名称用于此目的,您就可以随意命名。

标签: c# visual-studio namespaces project


【解决方案1】:

是和不是。与项目同名的顶级命名空间对于许多项目来说很常见并且非常好。在处理使用该命名空间中的类的代码时,这有助于您轻松识别源文件在项目结构中的位置。

但是,如果您正在编写一个计划发布的库,请注意 Microsoft 针对 Names of Namespaces 的框架设计指南:

请在命名空间名称前加上公司名称,以防止来自不同公司的命名空间具有相同名称。

务必使用 PascalCasing,并使用句点分隔命名空间组件(例如 Microsoft.Office.PowerPoint)。

因此,如果您的项目名为 Foo,那么您的命名空间将是 MyCompany.Foo

【讨论】:

  • 但是从技术上讲,如果我的项目被命名为“Foo”,那么顶级命名空间的名称不会只是“Foo”而不是“MyCompany.Foo”吗?
  • 如果您打算发布它也没关系。 (或者如果项目名称非常独特。)
  • @TechInquisitor 好的。我想我要问的是如何在顶级命名空间的名称、项目的名称和公司名称前面加上前缀?这样做的唯一合理方法是,如果我的项目被命名为“MyCompany.Foo”,但在您的示例中,该项目被简单地命名为“Foo”。这就是为什么我质疑如果项目未命名为“MyCompany.Foo”,“MyCompany”如何成为顶级命名空间的名称“MyCompany.Foo”的一部分,因为顶级命名空间从名称中获取它的名称(默认情况下)所在的项目。
  • @TechInquisitor 但是,如果项目名称中没有包含公司名称“MyCompany”,那么如何将其包含在顶级命名空间的名称中。你的例子不正确。因为顶级命名空间的名称来自项目。
  • @TechInquisitor 对我上述评论的任何想法将不胜感激。希望早日收到你的消息。谢谢:)
猜你喜欢
  • 2021-09-02
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
相关资源
最近更新 更多