代码的坏味道
拆分函数,一个功能集中在一起,形成一个新函数(提炼)
少用临时变量,如调用方法产生的返回值直接写
条件表达式和循环常常也是提炼的信号
减少参数个数,使用对象
尽量使用对象,如有一个起始值和一个结束值组成的Range类
使用多态替换switch
对于没用的组件,应该以内部类
如果每个函数的粒度都很小,那么函数被复用的机会就更大,其次,这会使高层函数读起来就像一系列注释,再次,如果函数都是细粒度,那么函数覆写也会更容易些
函数名称和函数本体之间的语义(它做什么)
如果手上有一群组织不甚合理的函数,你可以将它们都内联到一个大型函数中,再从中提炼出组织合理的小型函数。
去掉临时变量:return anorderbasePrice()>1000
重构时先不要考虑性能
查询代替临时变量
如果程序中有某临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果,针对每次赋值创建一个独立对应的临时变量。
不要对参数赋值
但是不要再构造函数中使用设值函数
解除关系
取值函数不该返回集合自身,因为这会让用户得以修改集合内容而集合拥有者却一无所知。Collections.unmodifiableList()方法使一个集合只读
封装包含集合的类,包含对集合增加、删除、获取长度的函数
封装数组:
以类代类型码:
以字段取代子类:各个子类的唯一差别只在“返回常量数据”的函数身上