代码之家  ›  专栏  ›  技术社区  ›  Mark Canlas

初级/新生类及其超级类是否有命名约定?

  •  1
  • Mark Canlas  · 技术社区  · 14 年前

    关于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() { ... }
      }
    }
    

    但之后,您决定随着增长重构您的内部,并创建更多的堆栈站点,每个站点都复制自己的名称空间。

    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 回复  |  直到 14 年前
        1
  •  5
  •   Mark Seemann    14 年前

    我认为你应该保持原样(通常称为 Program )而取而代之 有利于组合而非继承 .

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