对变量命名明明白白学C#大学霸
对变量命名明明白白学C#大学霸
对变量命名对变量命名明明白白学C#大学霸
由于处在C#程序中,变量也属于标识符的一种。因此,它必须遵守标识符的命名规则,而且不能与关键字名称相同。
注意:C#中允许为变量名加前缀“@”。变量的前缀@其实并不是名称的一部分,而是避免与其他语言交互时发生冲突。例如一定要使用与关键字相同的名称时,可以在名称之前加上@前缀。一般情况下,不推荐使用前缀@作为变量名的一部分。
为变量命名时,C#语法规范是必须遵守的,否则变量无法通过编译。
【示例1-9】以下是一些符合C#语法规范的变量名:
abc age_123 @this
尽管符合了C#语法规范的变量名就可以使用,但是从代码编写角度来看,具有描述性质的变量明便于程序的理解。因此,从代码编写角度考虑,变量的命名有以下几个建议:
1.做到“见名知意”
【示例1-10】有个程序员比尔,某天在写程序过程中使用a表示人的姓名,b表示人的体重,c表示年龄。因此,有变量名如下:
a b c
过了几天,程序出现一些问题,于是比尔打开代码,开始排查错误。看着代码中的a、b、c,比尔忘记这些变量表示的是什么意思。为了尽快找到错误,比尔找来同事亨利一起分析代码。而亨利作为一个代码阅读者,也无法理解变量a、b、c表示的是什么对变量命名明明白白学C#大学霸。
因此,变量名应当直观,可望文知意。不提倡使用任何缩写。
【示例1-11】将示例1-10中比尔的程序进行修改,使用name表示人的姓名,weight表示人的体重,age表示年龄。因此,变量名如下:
name weight age
这样命名,当程序出现问题,程序员比尔去排查错误的时候,很容易读懂代码。看见name就知道指代的是名字,weight指代的是体重,age指代的是年龄。
2.避免用拼音或者汉字命名
编写代码时,程序员都习惯于使用英语单词或词组来为变量命名。为什么不使用拼音来表示呢?我们来看下面的例子。
【示例1-12】比尔在程序中分别需要录入“张”先生和“章”先生的信息。但是,“张”与“章”的拼音都是:
zhang
因此,无法区分“章”先生和“张”先生。中国汉语博大精深,有很多字或者词组具有相同的拼音,例如“事实”和“试试”。在汉语中可以通过音调和上下文关系区分,但是在程序中,不容易快速分辨出拼音指代的意思。因此,一般不使用拼音表示标识符。
编程序时,可以使用汉字作为变量名。但是程序中需要对数据进行各种运算。进行各种运算的符号被称为运算符。如果在中文状态下输入运算符、大括号({})、小括号(())等,程序将无法识别这些符号。因此,在编程时尽量不要使用汉字作为变量名。
3.复杂词语变量使用PascalCasing方式命名
对于一些简单的命名,使用一个单词即可满足需求。例如使用一个变量指代人的名字,将变量命名为name,而指代年龄的变量命名为age。但复杂的词组呢,就比较麻烦了。这个时候就需要使用PascalCasing命名方式了。为了让大家更能直观感受到PascalCasing命名方式的好处,下面先看两个例子。
【示例1-13】程序员比尔需要为使用一个变量指代文件结尾,而词组end of file正好表示文件结尾。由于C#标识符规定不能包含空格,因此将三个单词连起来为变量命名如下:
endoffile
看看这个变量名,程序员很难分辨它表示的是什么意思,使得代码阅读起来很困难。因此,这样的命名不是好的变量名。
【示例1-14】同样的情况,程序员比尔需要表示字符表,而char table正好符合比尔的本意。鉴于C#标识符的规定,将这个词组中间的空格去掉,表示变量名如下:
chartable
仔细看变量名,我们发现,单词chartable的意思为“可绘图的”。那么当我们看到这个变量名,是该将它理解为“字符表”还是“可绘图的”。使用该变量名产生了歧义,也不是好的命名。
这时,聪明的程序员前辈借用了化学表达式的方式。例如在化学中,氯化钠的化学式为“NaCl”。将这种表示方式映射到编程中的标识符命名,即将名称中每个单词的首字母用大写表示,例如HelloWorld。此种命名方式被称为PascalCasing(帕斯卡)命名方式。
因此,上述两个示例中的命名可以采用PascalCasing命名方式,分别修改为:
EndOfFile
CharTable
这个时候,变量名就很直观了,不存在辨识不清和歧义的问题了对变量命名明明白白学C#大学霸。
Comments are closed.