主/进入类及其超类是否有任何命名约定?

时间:2010-01-26 19:48:33

标签: c# naming-conventions

我有一个关于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() { ... }
  }
}

但是随后你决定在你成长的过程中重构你的内脏并创建更多的Stack网站,每个网站都有自己的命名空间。

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”一词的可扩展类。

1 个答案:

答案 0 :(得分:5)

我认为您应该保持原样(通常称为Program),而不是支持合成优于继承

入口点是一个静态方法,因此绝对没有理由创建一个涉及持有Main方法的类的继承树。