代码整洁之道
有意义的命名
避免误导
例如别用acoountList来指称一组账号,除非它真的是List类型
提防使用不同之处较小的名称,区分这些花费的时间会比较多
做意义的区分
customerInfo与customerData与customer没有区别,要区分名称,就要以读者能鉴定不同之处的方式来区分
使用读得出来的名称
尽量不使用自造词,使用恰当的单词
使用可搜索的名称
类名
类名和对象名应该是名词或名词短语,避免使用Manager、Processor、Data或Info这样的类名,类名不应该是动词
方法名
方法名应当是动词或动词短语,属性访问器、修改器和断言应该根据其值命名,并且根据javabean的标准加上get、set和is前缀
添加有意义的语境
在地址中有一些firstName、lastName、street等变量,可以添加前缀addrFirstName、addrLastName等,以此提供语境,至少能明白这些变量是某个更大结构的一部分。
函数
只做一件事
要判断函数是否不止做了一件事,就是看是否能够再拆出一个函数,该函数不仅只是单纯地诠释其实现。
switch语句
对于switch语句,如果只出现一次,用于创建多态对象,而且隐藏在某个隐藏关系中,在系统其他部分看不到,就还能容忍
标识参数
如果传入boolean类型的参数,应该将函数一分为二
分隔指令与询问
函数要么做什么事,要么回答什么事,但二者不可兼得。函数应该修改某对象的状态,或是返回该对象的有关信息,两样都干常会造成混乱
使用异常代替返回错误码
如果关键字try在某个函数中存在,它就该是这个函数的第一个单词,而且在catch/finally代码块后面也不该有其他的内容
对象和数据结构
数据传送对象
最为精炼的数据结构,是一个只有公共变量,没有函数的类。这种数据结构有时候被称为数据传送对象,或DTO(Data Transfer Objects)。
错误处理
null值
• 别返回null值
返回null值,基本上是给自己增加工作量,也是在给调用者添乱,只要有一处没检查null值,应用程序就会失效
• 别传递null值
除非API要求向它传递null值,否则就要尽可能避免传递null值
类
单一权责原则
单一权责原则认为,类和模块应有且只有一条加以修改的理由。