![零基础C#学习笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/185/36710185/b_36710185.jpg)
2.3 程序编写规范
下面给出两段实现同样功能的C# 代码,如图2.17 所示。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_57.jpg?sign=1738820503-S3PowMYtxECo2ZOK4vhFxZK7fjqkFqqL-0-fd451d74f73b0efdb82873fbadf073c2)
图2.17 两段实现同样功能的C# 代码
大家在学习时,愿意阅读图2.17 中的左侧代码还是右侧代码?相信大家更喜欢阅读图2.17 中的右侧代码,因为它看上去更加规整。这是一种基本的代码编写规范。本节将对C# 代码的编写规则及命名规范进行介绍。遵循一定的代码编写规则和命名规范可以使代码更加规范化,对代码的理解与维护起到至关重要的作用。
2.3.1 代码编写规则
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_58.jpg?sign=1738820503-ZHlkxmd6UmoRhwW6KTmemGpI4ymHkYok-0-5c7d21912b85b34f138327167d4c7d84)
代码编写规则通常对应用程序的功能没有影响,但对改善对源代码的理解是有帮助的。养成良好的习惯对于软件的开发和维护都是很有益的,下面列举一些常用的代码编写规则。
●在编写C# 程序时,统一代码缩进的样式,比如统一缩进2 个字符或4 个字符。
●每编写完一行C# 代码,都应该换行编写下一行代码。
●在编写C# 代码时,应该合理使用空格,使代码结构更加清晰。
●尽量使用接口,然后使用类实现接口,以提高程序的灵活性。
●关键的语句(包括声明关键的变量)必须要写注释。
●建议局部变量在最接近使用它的地方声明。
●不要使用goto 系列语句,除非是用在跳出深层循环时。
●避免编写超过5 个参数的方法,如果要传递多个参数,则使用结构。
●避免书写代码量过大的try-catch 语句块。
●避免在同一个文件中编写多个类。
●生成和构建一个长的字符串时,一定要使用StringBuilder类型,而不使用string类型。
●对于if 语句,应该使用一对 “{ }” 把语句块包含起来。
●switch 语句一定要配置default 语句来处理意外情况。
2.3.2 命名规范
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_59.jpg?sign=1738820503-7hjc5QFkMTIiLTfQ1dvyU1mORdSTSAa0-0-67c13b7435b5a64c12c9bd3e17f4aae8)
命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范程序也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。下面介绍C# 中常用的一些命名规范。
1.两种命名方法
在C# 中,常用的命名方法有两种,分别是Pascal 命名法和Camel 命名法,下面分别进行介绍。
(1)用Pascal 命名法来命名方法和类型。以Pascal 命名法命名时,第一个字母必须为大写,并且后面连接词的第一个字母也要大写。
学习笔记
Pascal 是以纪念法国数学家Blaise Pascal 而命名的一种编程语言,C# 中的Pascal命名法就是根据该语言的特点总结出来的一种命名方法。
例如,定义一个公共类,并在此类中创建一个公共方法,代码如下。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_60.jpg?sign=1738820503-FIXiANsDpgvxsanOOM81y4B3y5PxonpK-0-e4e063d2f449526de67ebcc1dac869ee)
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_61.jpg?sign=1738820503-IOb8JekzT8yutama7LZOQe8s0cI0BXkW-0-d30c536ffea8bfc7d3eff776abefced4)
(2)用Camel 命名法来命名局部变量和方法的参数。使用Camel 命名法命名时,变量或方法名中第一个单词的首字母需要小写。
学习笔记
Camel 命名法又称为驼峰式命名法,它是由骆驼的体形特征推理出来的一种命名方法。
例如,声明一个字符串变量和创建一个公共方法,代码如下。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_62.jpg?sign=1738820503-fOMxq08lgCfCiPKiJCMDLthnLLociHw2-0-7e71076b875eb11c58b3fcb905f6f279)
2.程序中的命名规范
在开发项目时,不可避免地要遇到各个程序元素的命名问题,比如项目的命名、类的命名、方法的命名等。例如,在图2.18 中声明了一个User 类,在图2.19 中声明了一个aaa 类。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_63.jpg?sign=1738820503-2tXAf6YsaRVHxvQPjhEbZm91ttB6nEyw-0-d13bec0ef73479b37541193ae93f0b55)
图2.18 声明User 类
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_64.jpg?sign=1738820503-i8sa5VmzlJK5MrczmuDisqpCdoCTCYbf-0-89747a6c149dffad8523e65e492f9e24)
图2.19 声明aaa 类
从类的命名上很容易可以看出,图2.18 中的User 类应该是与用户相关的一个类,但是图2.19 中声明的aaa 类,即使再有想象力的人,恐怕也想象不出这个类到底是做什么用的。由这两个例子可以看出,在对程序元素命名时,如果遵循一定的命名规范,将使代码更加具有可读性。下面介绍常用程序元素的基本命名规范。
●在命名项目时,可以使用公司域名+ 产品名称,或者直接使用产品名称。
例如,在命名项目时,可以将项目命名为 “mingrisoft.ERP” 或 “ERP”。其中,mingrisoft 是公司域名,ERP 是产品名称。
●用有意义的名字定义命名空间,如公司名、产品名。
例如,利用公司名和产品名定义命名空间,代码如下。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_65.jpg?sign=1738820503-chkTboUhr4mMW4eGX0fU9lf12PrJGIVU-0-c2abe8bfbd0663c65bcfa7153e8f34f7)
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_66.jpg?sign=1738820503-ggaaaSVJNw2NvR0fQnmxzEExEuBc5sSh-0-af4ad58e58102730382619289d1fc087)
●接口的名称加前缀 “I”。
例如,创建一个公共接口Iconvertible,代码如下。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_67.jpg?sign=1738820503-4MnGHJ73Jn6Bzdmgf8CdcZ83y9Bhg4Kp-0-4ac42490bfc7d830460f0cc9019b9e6d)
●类的命名最好能够体现出类的功能或操作。
例如,创建一个名称为Operation 的类,用来作为运算类,代码如下。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_68.jpg?sign=1738820503-u21yNcjTUpSsXyLs7tOcYcM1bXfI9G7p-0-70db8eb1798e54c2a884dd1546f29168)
●方法的命名:一般将其命名为动宾短语,表明该方法的主要作用。
例如,在公共类File 中创建CreateFile 方法和GetPath 方法,代码如下。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_69.jpg?sign=1738820503-gMZ0GVE1OiYtMigLMj6Uc7KvRbPLzIxu-0-e1fd8649dfe014bb759bcc5f1fcbbc35)
●在定义成员变量时,最好加前缀 “_”。
例如,在公共类DataBase 中声明一个私有成员变量_connectionString,代码如下。
![img](https://epubservercos.yuewen.com/03FE8C/19471983108810806/epubprivate/OEBPS/Images/txt003_70.jpg?sign=1738820503-bD0YUMvL9iJlLlbAxRsqs9gNuPDJy6Fh-0-843408daed755a0b53f1a44e5108a1ff)