重构原则
何谓重构
名词:对软件内部结构的一种调整,目的是在不改变软件可观察的行为下,提高理解,降低修改成本。
动词:使用一些列重构手法,在不改变软件行为下,调整结构。
性能优化的区别
重构:为了让代码“更容易理解,更容易修改”
性能优化:让程序运行更快,有可能代码更难理解和维护
添加功能与重构
在开发时需要保持这两顶帽子的独立行 ;
添加新功能,就仅仅添加新功能,而不是想到重构;
重构时不能添加新功能,只管调整代码结构。
重构的优点
- 改进软件设计
- 使软件更容易理解
- 帮助找到bug
-
何时重构
三次法则
做某件事时只管去做
- 做类似的事会产生反感,但还可以去做
-
预备重构
让添加新功能更容易,在添加新功能之前,会查看有的代码;如果容易修改,就可以重构
捡垃圾式重构
如果发现的坏代码很容易重构,就会马上重构它;
如果需要花一些精力,就可以标记,下次重构它们;长期重构
不要专门的时间或者团队去做重构,而是让整个团队达成共识,在未来的时间里逐步解决问题;每当有人靠近重构,就推进一点;这样的好处是,不会破坏代码,每次小改动之后,容易测试并且使整个系统仍然照常工作。
复审代码时
何时不重构
不需要使用,修改它
- 容易理解的代码
-
重构的挑战
延缓新功能开发
需要有权衡取舍时间;
如果添加的功能非常小,这时会选择添加功能
- 遇见多次问题或代码,可以重构
代码所有权
鼓励代码可以修改;相关负责的代码块的开发者选择合并,其他开发者可以提交代码分支;
测试
重构架构和YAGNI
应对未来变化,就是在软件里植入灵活性机制,但引入此机制,会增加系统的复杂性;所以只有当未来重构很困难时,才可以考虑添加灵活性。可以是,增量式、渐进式的;
采取YAGNI:“你不会需要它”;并不是完全不考虑,而是让问题更加显示出来,对问题理解更加充分,再着手解决。