zoukankan      html  css  js  c++  java
  • 微软推荐的.net命名规范(2)

    类、结构和接口的名称

    通常,类型名称应该是名词短语,其中名词是由类型表示的实体。例如,ButtonStackFile 都具有名称,用于标识由类型表示的实体。从开发人员的角度选择标识实体的名称;名称应反映使用场合。

    下面的准则适用于如何选择类型名称。

    按照 Pascal 大小写格式,使用名词或名词短语(或偶尔使用形容词短语)为类、接口和值类型命名。

     

    不要为类名加前缀(如字母 C)。

    接口不适用此规则,它应以字母 I 开头。

    考虑在派生类的末尾使用基类名称。

    例如,从 Stream 继承的 Framework 类型以 Stream 结尾,从 Exception 继承的类型以 Exception 结尾。

    为接口名称加上字母 I 前缀,以指示该类型为接口。

     

    在定义类/接口对(其中类是接口的标准实现)时,一定要确保类和接口的名称除接口名称以字母 I 为前缀外,二者应完全相同。

    例如,Framework 提供 IAsyncResult 接口和 AsyncResult 类。

    泛型类型参数的名称

    泛型是 .NET Framework 2.0 版的主要新功能。下面的准则适用于为泛型类型参数选择正确的名称。

    用描述性名称为泛型类型参数命名,除非单个字母的名称已完全可以自我说明而无需描述性名称。

    IDictionary 是一个符合此准则的接口的示例。

    对具有一个单字母类型参数的类型,考虑将字母 T 用作这些类型的类型参数名称。

     

    将字母 T 作为描述性类型参数名称的前缀。

     

    考虑在参数名称中指示置于类型参数上的约束。例如,约束于 ISession 的参数可称为 TSession。

     

    常见类型的名称

    下面的准则提供的命名约定有助于开发人员了解某些类的使用场合。准则中提及的从某个其他类型继承的类型,指的是所有的继承者,而不只是直接继承的类型。例如,“向从 Exception 继承的类型添加 Exception 后缀”这一准则意味着在继承层次结构中具有 Exception 的任何类型都应该使用以 Exception 结尾的名称。

    每条这样的准则还用来保留指定的后缀;除非类型满足该准则表述的条件,否则不应使用该后缀。例如,如果类型不是从 Exception 直接或间接继承的,则类型名称不能以 Exception 结尾。

    向自定义属性类添加 Attribute 后缀。

    ObsoleteAttributeAttributeUsageAttribute 是符合此准则的类型名称。

    向在事件中使用的类型(如 C# 事件的返回类型)的名称添加 EventHandler 后缀。

    AssemblyLoadEventHandler 是符合此准则的委托名称。

    向不是事件处理程序的委托的名称添加 Callback 后缀。

     

    不要向委托添加 Delegate 后缀。

     

    向扩展 System.EventArgs 的类添加 EventArgs 后缀。

     

    不要从 System.Enum 类派生;使用当前所用语言支持的关键字。例如,在 C# 中应使用 enum 关键字。

     

    向从 System.Exception 继承的类型添加 Exception 后缀。

     

    向实现 System.Collections.IDictionary 或 System.Collections.Generic.IDictionary<TKey, TValue> 的类型添加 Dictionary 后缀。注意,System.Collections.IDictionary 是特定类型的集合,但此准则的优先级高于以下更为一般的集合准则。

     

    向实现 System.Collections.IEnumerable、System.Collections.ICollection、System.Collections.IList、System.Collections.Generic.IEnumerable<T>、System.Collections.Generic.ICollection<T> 或 System.Collections.Generic.IList<T> 的类型添加 Collection 后缀。

     

    向从 System.IO.Stream 继承的类型添加 Stream 后缀。

     

    向从 System.Security.CodeAccessPermission 继承的类型或实现 System.Security.IPermission 的类型添加 Permission 后缀。

     

    枚举的名称

    不要在枚举值名称中使用前缀。例如,不要对 ADO 枚举使用 ad 之类的前缀,也不要对多格式文本枚举使用 rtf 之类的前缀,依此类推。

    这还意味着不应在枚举值名称中包含枚举类型名称。下面的代码示例演示了不正确的枚举值命名。

    C#
    public  enum Teams
    {
        TeamsAlpha,
        TeamsBeta,
        TeamsDelta
    }

    不要将 Enum 用作枚举类型的后缀。

     

    不要在标志枚举的名称中添加 Flags 作为后缀。

     

    对枚举使用单数名称,除非枚举值是位域。

     

    对使用位域值的枚举(也称为标志枚举)使用复数名称。

    类型成员的名称

    类型包含以下几种成员:

    • 方法

    • 属性

    • 字段

    • 事件

    本节中的准则有助于类库设计者为成员选择与 .NET Framework 一致的名称。

    方法的名称

    使用动词或动词短语作为方法的名称。

    通常,方法对数据进行操作,因此,使用动词描述方法的操作可使开发人员更易于了解方法所执行的操作。定义由方法执行的操作时,应从开发人员的角度仔细选择明确的名称。不要选择描述方法如何执行其操作的动词,也就是说,不要使用实现细节作为方法名称。

    属性的名称

    使用名词、名词短语或形容词作为属性的名称。

    名词短语或形容词适合于属性,因为属性保存数据。

    不要使用与 Get 方法同名的属性。

    例如,不要将一个属性命名为 EmployeeRecord,又将一个方法命名为 GetEmployeeRecord。开发人员会不知道使用哪个成员来完成其编程任务。

    使用肯定性短语作为布尔值属性的名称(如使用 CanSeek 而不使用 CantSeek)。此外,还可以为布尔值属性添加前缀(如 Is、Can 或 Has),但要注意使用得当。

     

    考虑为属性提供与其类型相同的名称。

    如果某个属性已强类型化为某个枚举,则该属性可与该枚举同名。例如,如果有一个名为 CacheLevel 的枚举,则返回其中一个枚举值的属性也可以命名为 CacheLevel

    事件的名称

    使用动词或动词短语作为事件的名称。

     

    在为事件命名时,使用现在时或过去时表示时间上的前后概念。例如,在窗口关闭之前引发的关闭事件可命名为“Closing”,在窗口关闭之后引发的关闭事件可命名为“Closed”。

     

    不要使用“Before”或“After”作为前缀或后缀来指示之前和之后发生的事件。

     

    使用后缀 EventHandler 命名事件处理程序(用作事件类型的委托)。

     

    在事件处理程序签名中使用命名为“sender”和“e”的两个参数。

    sender 参数的类型应为 Objecte 参数应是 EventArgs 的实例或继承自 EventArgs 的实例。

    使用 EventArgs 后缀命名事件参数类。

     

    字段的名称

    字段的命名准则适用于静态公共字段和静态受保护字段。不要定义公共实例字段或受保护实例字段。有关更多信息,请参见字段设计

    在字段名称中使用 Pascal 大小写格式。

     

    使用名词或名词短语作为字段的名称。

     

    不要在字段名称中使用前缀。例如,不要使用 g_ 或 s_ 来区分静态字段和非静态字段。

    参数名

    选择适当的参数名称可极大改善库的可用性。适当的参数名称应指示该参数会影响的数据或功能。

    对参数名称使用 Camel 大小写。

     

    使用描述性参数名称。

    在大多数情况下,参数名称及其类型应足以确定参数的用法。

    考虑使用反映参数含义的名称而不是反映参数类型的名称。

    在开发人员工具和文档中,参数的类型通常都是可见的。通过选择一个说明参数的用法或含义的名称,可以向开发人员提供有价值的信息,帮助他们找到任务所需的成员,也有助于向成员传递正确的数据。

    资源的名称

    本主题中准则适用于可本地化的资源,如错误信息和菜单文本。

    在资源键中使用 Pascal 大小写格式。

     

    提供描述性标识符,而不要提供短标识符。尽量保持标识符的简洁性,但不要牺牲可读性。

     

    不要使用公共语言运行库 (CLR) 编程语言中特定于语言的关键字。

     

    在命名资源中只能使用字母数字字符和下划线。

     

    使用点分隔符(“.”)以清晰的层次结构表示标识符。

    例如,Menus.FileMenu.Close.TextMenus.FileMenu.Close.Color 等名称符合此准则。

    对异常消息资源使用下面的命名约定。资源标识符应由异常类型名称加上异常的短标识符构成,二者之间以点分隔。

    例如,ArgumentException.BadEnumValue 符合此准则。

  • 相关阅读:
    『高性能模型』轻量级网络ShuffleNet_v1及v2
    『计算机视觉』物体检测之RefineDet系列
    『计算机视觉』目标检测前沿及回顾(2018)
    『高性能模型』轻量级网络MobileNet_v2
    『流畅的Python』第14章:可迭代的对象、迭代器和生成器
    『流畅的Python』第12章:继承的优缺点
    『关键点检测』CPN:Cascaded Pyramid Network for Multi-Person Pose Estimation
    『计算机视觉』Mask-RCNN_从服装关键点检测看KeyPoints分支
    『计算机视觉』Mask-RCNN_训练网络其三:训练Model
    『计算机视觉』mini深度学习框架实现
  • 原文地址:https://www.cnblogs.com/liucp/p/2226878.html
Copyright © 2011-2022 走看看