重构代码之1-命名

对于一个像我这样严肃的程序员来讲酷,个人觉得起变量名就想给自己的孩子起名一样重要,如果你有N胞胎长得都像String一样,你如何区分他们,显然用1,2,3,4...或者a,b,c,d的方式是根本无法做到好的区分的,那我们应该怎么做? 这就是我想说的为程序变量起有意义的名字很重要。

1. 使用可以见名知意的名称作为变量名称:

举个例子:

 如果你的变量名还需要注释,何不把变量名起的见名知其意呢?

试想下面的两段代码你更喜欢阅读哪一个呢?



 

 是不是第二段代码看过之后很清晰啊,其实很明显第二段代码只是仅仅是改变了变量名,让每个变量名都变得有意义,所以想一个有意义的变量名,方法名,在未来会节省我们很多的维护成本。但是请大家不要轻易的使用一些只有自己能理解的简称来命名,鼓励变量名可读,使用完整单词,这样可以降低沟通成本。

提到有意义的变量名必须多啰嗦一句就是不要用accoountList这种变量名,除非返回值真的是List类型,也不用使用o,l 这样的变量,因为他们真的很像0,1数字。

2  对于函数的参数我们一样要进行有意义的区分:

现在思考一下你是否曾写过这样的代码

public static void copyChars(char[] c1, char[] c2){

    for(int i = 0; i < a1.length; i++){

       a2[i] = a1[i];

    }

}

如果source, destination有没有清晰很多,

让我们来参观一下JDK是如何为参数命名的:



 
3  使用常量,变量代替一些标志量,计算变量:

比如这样的命名

 会不会比你写flag,写一些数字去控制删除次数,睡眠时间更加友好,也更加容易维护呢?如果下次老大说修改一下睡眠时间和修改次数,直接改常量就好了不用满屏幕的ctrl+f了。

4  如果你不能发明出更好的就使用匈牙利命名法(驼峰命名法)吧。对于单变量,作用范围小,简单的循环计数器这样的变量就是用i,j,k吧,不要发明出什么a,b,c,x,y,z之类的东西,因为i,j,k使用程序员都懂得的语言啊。

5  类名用名词,方法名用动词。千万不要同一个概念中出现不同的词汇,比如说大家都是controller,那就都是XXXController就好了,干嘛突然搞出个什么XXXManager呢? 再比如,连接字符串就用append呗,插入就用insert呗,干嘛要搞得满屏幕都是叫add的方法呢?相同的概念确不同的命名会很容易让人产生疑问。

6  如果你开发的是专业细分领域的东西,那就用这个领域的专业词汇去命名,这样命名才更有意思,更规范,在该领域中也更容易被理解。

如果我提到的问题在你的程序中出现,那么就请修改一下吧,让你的代码变得干净简洁。

以上问题属于个人感受的一个表达,如果有一些不妥的地方欢迎大家留言,共同探讨,共同学习。

猜你喜欢

转载自himichaelchu.iteye.com/blog/2113978