同一个类的两个函数含有相同的表达式或互为兄弟的子类内含有相同表达式
拥有短函数的对象会活的比较好、比较长 遵循的原则:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途(而非实现手法)命名
过大的类往往影响阅读,且其中必定含有可分解提炼的方法,
将来自同一对象的一堆数据收集起来
针对某一外界变化的所有相应修改,都只应该发生在单一类中,如果某一变化总是影响到多个函数的修改,则应该把这多个函数提炼到另一个类中
如果某一变化必须在许多不同的类里做出许多小修改,则应该把所有需要修改的代码放进同一个类里
函数对某个类的兴趣高过对自己所处类的兴趣,则应该把它移动到这个类里
把很多常常一起出现的数据提炼到一个新数据类里
判断所用数据是基本类型好还是对象好,灵活运用
switch往往伴随着重复,当然也不是不能用switch,比如有几种电影类型,每种电影价格不同且每种电影积分也不同时,就可能会出现使用两次甚至更多次switch(电影类型)的重复代码
每当为某个类增加一个子类,必须也为另一个类相应增加一个子类
去除没用的类
去除没用的抽象类
尽量少用局部变量
避免函数调用链过长
某个类接口有一半的函数都委托给其他类,则应让它直接和真正负责的对象打交道
两个类过于亲密,则应把两者的共同点提炼到一个新类里
两个函数做同一件事,应该提炼相同部分
根据修改库类的函数多少选择继承库类还是包装库类
数据类应该充分的封装,做到数据的安全
子类不想继承一些父类的某些函数和数据,应该为子类新建一个兄弟类,把所有不需要继承的函数和数据推给这个兄弟类
注释越少越好,通过重构手法把需要注释的类或函数提炼