Clean Code
1. 观点
- 代码混乱的代价十分庞大
- 写整洁代码是十分有必要的
- 我们是作者,代码是写给别人看的,要让人迅速看懂
2. 有意义的命名
-
命名要体现本意
避免使用模糊的名称
-
命名要避免误导
不应出现 List 或 Map 等指示变量类型的名称。
简单加个 s 或使用其他表示复数的表示法即可。 -
命名要避免废话和冗余
缺乏明确约定的前提下,不应使用冠词和无意义的后缀
如theMessage
和message
-
命名要简单易读
不要生造词,要使用易读的英文
-
命名要易于搜索
名称长短应与其作用域大小相对应
大作用域内,不应直接使用数字常量。 -
避免使用匈牙利命名法
命名不应前缀或后缀变量类型
-
避免使用成员前缀
在现代 IDE 中,没有必要使用冗余的成员前缀。
在过多的使用前缀后,前缀将会被越来越多的忽略。 -
避免使用接口前导字母
原因和上条相同,只不过这里指的是类一级
-
避免产生思维定式
应使用较为直白的命名,而不是生造一些定式单字词
-
关于类名
类名是名词或者名词短语。
类名不应该是动词。 -
方法名
方法名是动词或者动词短语。
getter, setter 和 assert 应依照 Javabean 标准使用 get, set 和 is 前缀 -
别扮可爱
代码是严肃的,直白的。
不应当出现过于幽默或者恶搞的命名 -
每个概念对应一个词
对于每个抽象概念取一个词,并确定下来。
-
不要使用双关
时刻保证每一个词只会代表一种含义
如add
方法用于连接两个现有值产生新值,则将单个值插入 collection 的方法就不能命名为add
,应命名为insert
或者append
-
使用技术性名称
看代码的都是程序员,使用技术性名称会更加靠谱。
-
使用源自问题领域的名称
如果不能使用技术性的名称,则应使用源自问题领域的词汇。
-
添加有意义的语境
很少有名称能够自我说明,最好为命名添加语境。
只有一个变量时,可以为其添加前缀说明语境。
但同一语境的变量过多时,应优先选择类作为变量的语境 -
不要添加没用的语境
只要短名称足够清楚,就不要使用长名称
3. 函数
-
函数应尽可能短小
最佳的函数逻辑行数应该在个位数
-
函数应该只做一件事
一个函数应该只做一项工作。
如果当前函数能够拆分出一个新函数,这说明其依然不够简洁。 -
应确保
switch
埋藏在较低的抽象层级,并不重复很不幸的是,
switch
语句没有办法避免。
所以只能将其尽量地包装起来,不要嵌套过深。 -
函数应使用描述性的名称
函数名称总比注释要好
-
函数参数应尽量简洁
参数个数越少越好。
尽量避免输出参数,应从返回值输出。