第
如何给C#变量取名字
目录一.变量命名风格1)类成员变量、局部变量2)静态成员变量、枚举值、常量二.变量命名最高境界三.变量命名最佳实践1)采用名词或者形容词来命名变量2)避免使用单字母变量,尽量细化变量含义3)变量命名前后用词需统一4)集合变量用类型或者复数s作为后缀5)禁止使用is作为bool类型的类成员变量前置6)尽量避免使用缩写进行命名7)抛弃掉flag变量
一.变量命名风格
变量命名风格通常会根据不同的变量类型来区分,以Java语言为例,根据变量类型不同有两种命名风格:
1)类成员变量、局部变量
类成员变量、局部变量通常采用驼峰命名风格,如下:
StringuserName;
2)静态成员变量、枚举值、常量
静态成员变量、枚举值、常量通常采用所有字母大写、多个单词以英文下划线连接,如:
publicstaticfinalintMAX_YEARS=25;
//建议枚举类都以Enum结尾
enumColorEnum{
RED(0,红色),
YELLOW(1,黄色),
GREEN(2,绿色),
WHITE(3,白色),
BLACK(4,黑色);
privateintcode;
privateStringname;
Color(intcode,Stringname){
this.code=code;
this.name=name;
二.变量命名最高境界
在函数命名那篇中我们说的函数命名最高境界是见字如面,那么对于变量命名来说,最高境界是什么呢?我认为是:自解释,即代码即注释。
为什么这么说呢,因为通常来说一个函数是会有函数注释的,即使函数名字取的不好,如果注释写的比较清楚,对于后续维护人员来说也是了解函数具体功能的一种方式。
而变量则不同,在一个工程里面,变量的数量远远大于函数的数量,所以不太可能对于每个变量都去写注释,所以如果一个工程的变量命名很糟糕,那么对于后续维护人员来说将是毁灭性的打击,因为每读到一个变量,可能就需要去猜测变量的含义,我想没有哪个人愿意读到这样的代码,永远记住一点:代码是写给人看的,不是写给机器看的。
譬如下面这段代码的命名就非常糟糕:
ppn=(cpn1)(cpn-1):cpn;
npn=(cpntpn)(cpn+1):tpn;
p=newPage(ppn,cpn,npn,tpn);
上面这段代码估计只有原作者清楚地知道各个变量的含义是啥了,
如果修改为下面这种写法,可读性会好很多,并且一目了然,很容易知道其大概意图是计算分页信息:
prePageNum=(curPageNum1)(curPageNum-1):curPageNum;
nextPageNum=(curPageNumtotalPageNum)(curPageNum+1):totalPageNum;
page=newPage(prePageNum,curPageNum,nextPageNum,totalPageNum);
三.变量命名最佳实践
1)采用名词或者形容词来命名变量
变量一般情况下建议使用名词、名字组合或者形容词,因为变量一般形容的是一种事物或者事物的属性,所以用名词或者名词组合更容易让人理解,而形容词一般用于bool类型的变量。
2)避免使用单字母变量,尽量细化变量含义
在程序中,尽量避免使用单字母变量,唯一可以接受使用单字母变量的场景只有for循环,不过还是不太推荐在for循环中使用单字母变量(用pos、index比for循环的i、j、k要好很多)。
举个例子,比如下面这行代码:
doublecalConeVolume(doubleb,doubled){
returnMath.PI*b*b*d/3;
咋一看这个函数参数感觉挺清晰,但是一细看,b是什么?d又是什么?如果我要用这个函数,该怎么传参?估计大部人是一脸懵逼状,只能进去看实际的函数实现才知道b是圆锥体半径,d是圆锥体高度;
那么怎么优化这段代码命名呢?其实很简单,稍微细化一下变量含义,让变量名自己去表达实际意图:
doublecalConeVolume(doubleradius,doubleheight){
returnMath.PI*radius*radius*height/3;
3)变量命名前后