我有一个关于C#中命名约定的问题,我不认为这些约定在大多数以前提出的问题或通常的资源(如MSDN Naming Guidelines)中都有涉及。现有的大多数命名约定都集中在框架和其他类需要使用的东西上。这可能有点不同。是否有任何主/入门类及其超类的命名约定?
你叫什么名字Main()所在的类?它与超类有什么关系?
比方说,你是一个刚起步的程序员,你创建一个很像这个网站的小应用程序。你可能会这样做。
// the title of the class happens to be the title of the project
namespace FogCreek {
public class StackOverflow {
public static Main() { ... }
}
}
但后来你决定为你的成长,创造更多的堆栈站点,每一个occopying自己的命名空间重构你的内脏。
namespace FogCreek.StackSites.StackOverflow {
public class WhatDoICallThis : StackExchangeSite {
public static Main() { ... }
}
}
// elsewhere in another project...
namespace FogCreek {
public class StackExchangeSite {
...
}
}
我不愿称它为StackOverflow的,因为它的全名是FogCreek.StackSites.StackOverflow.StackOverflow。这不是多余的吗?
另外,StackExchangeSite应该在FogCreek中的自己的命名空间吗?还是应该“高于”从其衍生的项目?
Company.Foobar.Widget
-> Company.Foobar.Widget.RoundWidget
-> Company.Foobar.Widget.SquareWidget
vs
Company.Foobar.Widget.BaseWidget
-> Company.Foobar.Widget.RoundWidget
-> Company.Foobar.Widget.SquareWidget
我不喜欢第二个选项,因为我不记得任何使用单词“Base”的可扩展类。