
2.3 程序编写规范
下面给出两段实现同样功能的C# 代码,如图2.17 所示。

图2.17 两段实现同样功能的C# 代码
大家在学习时,愿意阅读图2.17 中的左侧代码还是右侧代码?相信大家更喜欢阅读图2.17 中的右侧代码,因为它看上去更加规整。这是一种基本的代码编写规范。本节将对C# 代码的编写规则及命名规范进行介绍。遵循一定的代码编写规则和命名规范可以使代码更加规范化,对代码的理解与维护起到至关重要的作用。
2.3.1 代码编写规则

代码编写规则通常对应用程序的功能没有影响,但对改善对源代码的理解是有帮助的。养成良好的习惯对于软件的开发和维护都是很有益的,下面列举一些常用的代码编写规则。
●在编写C# 程序时,统一代码缩进的样式,比如统一缩进2 个字符或4 个字符。
●每编写完一行C# 代码,都应该换行编写下一行代码。
●在编写C# 代码时,应该合理使用空格,使代码结构更加清晰。
●尽量使用接口,然后使用类实现接口,以提高程序的灵活性。
●关键的语句(包括声明关键的变量)必须要写注释。
●建议局部变量在最接近使用它的地方声明。
●不要使用goto 系列语句,除非是用在跳出深层循环时。
●避免编写超过5 个参数的方法,如果要传递多个参数,则使用结构。
●避免书写代码量过大的try-catch 语句块。
●避免在同一个文件中编写多个类。
●生成和构建一个长的字符串时,一定要使用StringBuilder类型,而不使用string类型。
●对于if 语句,应该使用一对 “{ }” 把语句块包含起来。
●switch 语句一定要配置default 语句来处理意外情况。
2.3.2 命名规范

命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范程序也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。下面介绍C# 中常用的一些命名规范。
1.两种命名方法
在C# 中,常用的命名方法有两种,分别是Pascal 命名法和Camel 命名法,下面分别进行介绍。
(1)用Pascal 命名法来命名方法和类型。以Pascal 命名法命名时,第一个字母必须为大写,并且后面连接词的第一个字母也要大写。
学习笔记
Pascal 是以纪念法国数学家Blaise Pascal 而命名的一种编程语言,C# 中的Pascal命名法就是根据该语言的特点总结出来的一种命名方法。
例如,定义一个公共类,并在此类中创建一个公共方法,代码如下。


(2)用Camel 命名法来命名局部变量和方法的参数。使用Camel 命名法命名时,变量或方法名中第一个单词的首字母需要小写。
学习笔记
Camel 命名法又称为驼峰式命名法,它是由骆驼的体形特征推理出来的一种命名方法。
例如,声明一个字符串变量和创建一个公共方法,代码如下。

2.程序中的命名规范
在开发项目时,不可避免地要遇到各个程序元素的命名问题,比如项目的命名、类的命名、方法的命名等。例如,在图2.18 中声明了一个User 类,在图2.19 中声明了一个aaa 类。

图2.18 声明User 类

图2.19 声明aaa 类
从类的命名上很容易可以看出,图2.18 中的User 类应该是与用户相关的一个类,但是图2.19 中声明的aaa 类,即使再有想象力的人,恐怕也想象不出这个类到底是做什么用的。由这两个例子可以看出,在对程序元素命名时,如果遵循一定的命名规范,将使代码更加具有可读性。下面介绍常用程序元素的基本命名规范。
●在命名项目时,可以使用公司域名+ 产品名称,或者直接使用产品名称。
例如,在命名项目时,可以将项目命名为 “mingrisoft.ERP” 或 “ERP”。其中,mingrisoft 是公司域名,ERP 是产品名称。
●用有意义的名字定义命名空间,如公司名、产品名。
例如,利用公司名和产品名定义命名空间,代码如下。


●接口的名称加前缀 “I”。
例如,创建一个公共接口Iconvertible,代码如下。

●类的命名最好能够体现出类的功能或操作。
例如,创建一个名称为Operation 的类,用来作为运算类,代码如下。

●方法的命名:一般将其命名为动宾短语,表明该方法的主要作用。
例如,在公共类File 中创建CreateFile 方法和GetPath 方法,代码如下。

●在定义成员变量时,最好加前缀 “_”。
例如,在公共类DataBase 中声明一个私有成员变量_connectionString,代码如下。
