现在开始读第二章的内容了,第一章是总体的概念介绍,第二章开始就是详细额各种方法了。然后发现悲剧出现了,文章中的主要的例子的都是Java的,而本人主要用C/C++,Java只限大学上过点课,虽然阅读上没什么问题,但是感觉不习惯... 虽然我知道这样是不好的,但是还是不习惯... (贱人就是矫情-_-),写博客不好意思直接抄书上代码,我自己也尽量不用书中的例子,自己编点例子(C/C++的...),下面正题。
第二章 有意义的命名
这章就是讲变量函数等的命名,个人感觉主要常用的知识点如下:
1.不要使用无意义或者有歧义的命名:
比如一个字母,或者意义不明的的非常用字母缩写,d(这货是啥?),ad(这货是地址?还是加数?),list1(这货是list1!但是事啥的list啊!)
2.使用能区分开的命名:
比如拷贝字符串函数,可以写成下列的形式:
char * strcpy(char *a,char *b); //要看代码才知道a,b是什么,换个大家不认识函数,可能就不知道了。
char * strcpy(char *s,char *d); //这个会清楚很多,至少配合上strcpy这个函数名应该不会有歧义,这个就和i用来计数的例子相似了。
char * strcpy(char *src,char *dst);//这个基本就很清楚了,换到别的函数也没啥问题,如果要是别的函数,可以加些扩展让代码更清晰,srcName,如果用sName可能会有些歧义,这里的s可以是src,也可以是string的代码,这时候就要注意统一命名风格了。
3.使用可读的名称:
书中的例子是把生成日期写成,genymdhms,读起来很搞笑,这点也就是说不要自以为是的造词。
4.使用可搜索的名称:
注意是一些字母和数字搜索比较复杂,所以推荐用变量或者宏代替,比如用WORK_DAYS_PER_WEEK,代替5,其实这样写不只好搜索,修改也容易很多。
5.不要使用”编码命名规则“(翻译的就叫编码,个人感觉不清晰):
就是不要用些繁琐的命名规则,这些都是名称长短都很重要的时代的产物,已经过时了,比如Fortran的命名法,匈牙利标记法等。其实用m_表面这是个变量,确实有他的作用,但是现在时代不同了,你为啥不去找个有高亮的编译器,或者说现在的编译器基本有这种功能了,咱们应该善于使用。
6,避免思维映射:
其实就是别自以为是,有些缩写简写你知道不代表别人知道,无论什么情况最好别用,在不能确定的情况下,一个好办法就是请别人读下你的代码。
7,类名不能是动词,方法名应当是动词:
为啥?想想类是什么编程方式的产物,面向对象!动作只能是摸个对象的行为,也就是方法,而不是对象本身。
8,少卖萌:
别用些卖萌的命名,“砍死那些卖萌的”。
9,命名的唯一性:
例如同时用controller和manager,add和append,写代码不是写高考作文。
10,先考虑程序员能读懂的命名,其次是领域专家能读懂得的:
你要知道谁会去读你的代码,请忽视有些叫自己程序员的外行,或者要要看代码的客户。
11,注意语境的使用:
比如第二条提到的例子,再特定的情况下,srcName,copyName是更好的命名方式,但是不要添加多余的内容,在能确保区分性和明确性的情况下,用越少的语境词语越好。
12:,别用中文名称:(这条我自己加的,作者外国人不会考虑这个的,不过这个可以算可读性的特例了)
原因不解释,不过下列情况下,你到时可以使用中文:1你的代码一辈子只有自己会看。2中文成为世界通用语言。3你是某个中文编程语言的开发者。