2010-01-26 25 views
1

我有一个关于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”的可扩展类。

回答

5

我认为你应该宁愿保留它(通常称为Program),而不是赞成组合继承

它的入口点是一个静态方法,所以完全没有理由创建一个继承树,它涉及到持有Main方法的类。