【C# 基础知识篇】C# .Net设计准则之命名要求

前言

命名规则,其实是一种约定俗成的定义方式。旨在使多数开发人员在编程时统一编程模型,易于代码理解。
接触过的多种编程语言,都有不一样的命名规则,难免经常会混淆。
单独记录一篇日志,方便自己加深印象。
遇到混淆或有遗忘时,亦可翻出来重新看看。
全文参考来自微软官方文档,具体参考“.Net框架设计准则

常见的变量命名方法

  • PascalCase(帕斯卡命名法)
    PascalCase 正如它的名称一样,要求规定每个单词的首字母为大写,不要使用下划线或连字符来区分单词。适用于除了参数名称外的所有标识符。
    例如:SetFirstClass
  • camelCase(驼峰命名法)
    camelCase要求规定将每个单词的首字母(除第一个单词之外)大写,不要使用下划线或连字符来区分单词。仅适用于参数名称。
    例如:firstClassName
  • Hungarian Notation(匈牙利命名法)
    通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。
    例如:i_CalssNumber

命名法的使用规定

  1. ✔️作为公共成员*1、类型和命名空间的标识符名称,使用 PascalCasing命名规则。
  2. ✔️作为私有成员*1和参数 的标识符名称,使用camelCase命名规则。
  3. ❌匈牙利命名法不准许被使用在C#语法中。
  4. ✔️关于组合词和常见术语,将大多数组合术语视为一个单词。(如:Callback,Gridline,Endpoint)
  5. ❌关于缩写词,不要使用未被广泛接受的缩写词;如遇两个字母的缩写词,两个字母均采用大写或小写。(如:Xml,Html,IO,ip,Email)
  6. ✔️遵循标识符易读性强原则,不使用强制缩写的简洁性名称。
  7. ❌避免使用编程语言特有的名称。(这一块理解不是很透彻,针对int,byte这些特有名称适当合理使用,不要产生错误引导
  8. ✔️如有API版本区分,应该在原有标识符后添加后缀,而不是前缀;如方法发生本质变更,则不允许使用添加后缀来区分,应该重命名。(如:x86 和 x64)
  9. ✔️程序集名称应该体现整体性,建议直接使用模板 “<Company>.<Component>.dll”(如:Litware.Controls.dll)
  10. 命名空间名称,建议直接套模板 “ <Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]”
  11. 类、类成员、结构和接口名称,应合理使用适当的词性(动词,形容词,名词)。

应用举例

//直接模板套用,PascalCasing命名法
namespace MyCompany.Training.Courses
{
    //枚举值:公有成员,PascalCasing命名法
    public enum CourseType
    {
        Lecture,
        Studio,
        Practicum,
    }
    //类:公有成员,PascalCasing命名法
    public class NamingGuidelines
    {
        //字段(通常情况下,应仅对具有 private 或 protected 可访问性的变量使用字段)。
        //使用名词、名词性短语或形容词为字段命名。
        //此处定义一个私有成员date,camelCasing命名法。
        private uint totalChapters;

        //常量:公有成员,PascalCasing命名法。
        public const String CourseTitle = "C# .Net Naming Guidelines";

        //属性:公有成员,PascalCasing命名法。
        //应向属性给定名词性短语或形容词性名称。
        public int ChapterNumber { get; set; }
        //如属性设置值为枚举参考值时,可以考虑使用同等名称:
        public CourseType CourseType { get; set; }

        //方法:公有成员,PascalCasing命名法, 请不要将“Read”命名为“Get”
        //参数:私有成员,camelCasing命名法
        public String ReadCourseCatalog(int numberOfChapter)
        {
            return ($"List {numberOfChapter} out of {totalChapters} chapter titles.");
        }

        //方法:公有成员,PascalCasing命名法,
        //注意,is并不是缩写单词,不必写成“IS”或“is”
        public bool IsStarted() { return false; }

        //事件:公有成员,PascalCasing命名法,事件用谓词命名,并用谓词时态指示引发事件的时间
        public event EventHandler CourseEnding;

        //接口
        //务必在接口名称前加上字母 I,表示该类型是一个接口
        //务必用形容词短语(或偶尔用名词或名词短语)命名接口
        interface IEquatable<T>
        {
            bool Equals(T obj);
        }
    }

}

拓展参考:
命名规范(3)标识符的命名
宏定义命名规范

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值