推荐书籍:代码整洁之道+设计模式
代码不整洁的危害
不整洁的代码随着时间的增加而增加时,生产力会随之降低. 导致的结果就是:
- 代码不易扩展或扩展容易引发其他问题
- 程序崩溃
- 加班
- 增加公司成本(加人) 甚至可能造成公司倒闭
整洁代码
- 可读性要高: 代码要像散文一样优雅易读,见码知意
- 拒绝重复代码
- 满足设计模式原则:(单一职责、开闭原则、里氏替换原则 、依赖倒转原则、接口隔离原则、迪米特法则、合成复用法则)
好的命名可提高代码的可读性,让人见码知意, 降低理解成本,提高效率, 减少加班
查询 xxx, 但是命名一会叫 query 一会叫 find,这种情况应该加以规范,保持一致; get
命名冗余 体现在命名有很多没必要的成分在里面, 并且这些"废话"并不能帮助区分它们的区别, 例如在变量命名中添加了 Variable 这个词, 在表名中添加了 Table 这个词.**所以命名中不要出现冗余的单词**, 并且提前约定好命名的规范.
函数名应见名知意: public String addCharacter(String originString, char ch);
(到底是在原有字符串首部添加,还是在原有字符串末尾追加呢?亦或是在某个固定位置插入呢?)
// 追加到末尾
public String appendCharacter(String originString, char ch);
// 插入指定位置
public String insertCharacter(String originString, char ch, int insertPosition);
```
// 获取单个对象的方法用get做前缀
getXxx();
//获取多个对象用list做前缀
listXxxx();
```
函数应该无副作用, 意思就是函数应该只做一件事,但是做这件事的时候做了另一件有副作用的事情.
例如: 校验密码时会初始化 session,导致会话丢失。如果无法移除这种副作用,应该在方法名中展示出来,避免用户误用 checkPasswordasswordAndInitializeSession, 从命名上就要体现副作用.
参数越少越好
不要使用标识参数
//标识参数方法
render(Boolean isSuite);
//重构为两个方法
reanderForSuite(); //true
renderForSingle(); //false
不要使用输出参数
什么是输出参数? 将变量作为参数传入方法,并且将变量输出, 这就是输出参数 因为增加了理解成本在里面,我们需要查看 doSomething到底对 student 做了什么. student 是输入还是输出参数? 都不明确.
项目代码 定期重构
项目代码 定期集体 code review
参考文档: