最佳做法是让命名空间与找到它的项目同名?[已结束]

Is it best practice for a namespace to have the same name as the project in which it is found in? [closed]

提问人: 提问时间:10/7/2021 更新时间:10/12/2021 访问量:1509

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章来用事实和引文来回答。

2年前关闭。

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

MySolution -> ProjectA -> ClassA.cs

默认情况下,项目 ProjectA 中第一个命名空间的名称为 。ProjectA

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

项目中第一个命名空间的名称是否与找到它的项目同名?

还是应该更改第一个命名空间的默认名称?

C# Visual-Studio 命名空间 项目

评论

0赞 carloswm85 12/28/2021
我不认为这是最好的做法,也不是坏的做法,但它似乎是一般的做法,对于小型项目或实践程序很有用(可能这就是为什么它是在 VS2019 上创建库或其他项目时的默认结构)。此外,请记住,(s) 的目的是帮助您保持代码井井有条并避免命名类冲突。只要名称服务于此目的,您就可以以任何您想要的方式命名它们。namespace

答:

1赞 Tech Inquisitor 10/7/2021 #1

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

但是,如果您正在编写计划发布的库,请注意 Microsoft 的命名空间名称框架设计指南:

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

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

因此,如果你的项目被命名为 ,你的命名空间将是 。FooMyCompany.Foo

评论

0赞 10/7/2021
但是从技术上讲,如果我的项目被命名为“Foo”,那么顶级命名空间的名称不就是“Foo”而不是“MyCompany.Foo”吗?
0赞 Tech Inquisitor 10/7/2021
如果您不打算发布它,那也没关系。(或者,如果项目名称非常唯一。
1赞 10/7/2021
@TechInquisitor 好的。我想我要问的是,我如何用公司名称作为项目顶级命名空间名称的前缀?唯一合理的方法是,如果我的项目被命名为“MyCompany.Foo”,但在您的示例中,该项目被简单地命名为“Foo”。这就是为什么我质疑如果项目没有被命名为“MyCompany.Foo”,“MyCompany”如何成为顶级命名空间名称“MyCompany.Foo”的一部分,因为顶级命名空间(默认情况下)从项目的名称中获取它的名字。
1赞 10/7/2021
@TechInquisitor 但是,如果项目名称中没有包含公司名称“MyCompany”,那么公司名称“MyCompany”如何包含在顶级命名空间的名称中。你的例子是不正确的。因为顶级命名空间从项目中获取其名称。
1赞 10/8/2021
@TechInquisitor对我的上述评论有任何想法将不胜感激。希望很快收到您的来信。谢谢:)