查建设公司人员是那个网站,网站栏目是什么,电子商务知名网站,法律服务网站建设重构小记#xff08;重构#xff0c;改善既有代码的设计读后总结#xff09;
我们要时时刻刻保持一颗项目要重构的心。 在非技术出身的领导看来#xff0c;能用的代码就是好代码#xff0c;只关注功能。 在工程师看来#xff0c;代码不仅要好用#xff0c;更要好看重构改善既有代码的设计读后总结
我们要时时刻刻保持一颗项目要重构的心。 在非技术出身的领导看来能用的代码就是好代码只关注功能。 在工程师看来代码不仅要好用更要好看好理解好修改。 重构就是让你的代码更时尚更方便更高效。
什么是重构
在不改变现有行为的前提下通过改变内部结构提高项目的可理解性和易修改性。 所以重构的目的就是使项目更容易理解和修改。
重构时机
代码复杂复杂到不想改了或者改不动了 时间允许进度驱动转为质量驱动 代码洁癖容不得一点坏味道 项目迁移项目交接后迁移并重构
重构常用快捷键以idea为例
shift F6一键修改变量名变量名不规范常用 ctrl F6一键修改类名或方法名也是命名不规范修改常用 ctrl alt m将选中代码一键抽出成函数过长函数常用 ctrl t将选中代码提取至各种块中比如if-elsetry-catch等
具体重构细节
重复代码
重构时应该把重复代码提炼出来可以提炼到公共父类或者静态函数等地方。
过长函数
重构时应该避免过长的函数应该尽量的将大函数分解成多个小函数并标明每个小函数的意思。
过大的类
一个类最好不要做太多事情也不要有太多的代码否则就会难以理解。
过长参数列
方法的入参如果超过5个就试着将一些入参抽成一个对象用对象来作为入参。
发散式变化
一个类中如果每次修改都要设计到几个不同的函数那么就要考虑将这个类拆分了。 针对某一外界变化的所有相应修改都应该只发生在单一类中。
霰弹式修改
与发散式变化相反 当发现某种变化必须在多个不同类中做许多修改就应该把这些所有需要修改的代码放入同一个类中。
依恋情节
将总是一起变化的东西放在一块
数据泥团
两个类中相同的字段应该拥有他们自己的对象
平行继承体系
是霰弹式修改的特殊情况 每当你为某个类怎增加一个子类也必须为另一个类相应增加一个子类就该重构了 一般策略是让一个继承体系的实例引用另一个继承体系的实例。
冗赘类
如果一个类的所得不值其身价它就应该消失
夸夸其谈未来性
如果一个类其实没多大作用只是想着以后会怎么样怎么样就先把他去掉
令人迷惑的暂时字段
如果类中的某些实例变量仅为某种特殊情况而设那么就需要把这些变量和其相关函数都提炼到一个独立类中。
中间人
如果某个类接口有一般的函数都委托给其他类那么就是过度调用了。这时候应该去掉委托直接调用。
亲昵关系
如果两个类过于亲密有太多相互调用引用的地方就必须拆散。 注意继承往往会造成过度亲密因为子类对父类的了解总是超过父类的主观愿望这时候就应该用委托代替继承 详细做法就是去掉原继承将原父类当成子类的一个属性用到父类的方法时去委托调用就行。
不完美的库类
当引用的库不能满足我们的需求需要扩展库类的功能时考虑引入本地扩展创建子类继承原库中的父类或者父类委托
被拒绝的馈赠
如果子类不需要继承父类的所有函数和数据这就意味着继承体系的错误。这时应该去掉继承关系用父类委托来代替原父类作为原子类的一个属性
过多的注释
注释应该是简单明了而不是为难懂的代码擦屁股解决这类问题还需要从代码提炼等方面做起增加代码的可读性。