18 重构,改善既有代码的设计(2018第8本)
周一坐飞机带上的,结果飞机晚点,此书竟看了约一半。
其中很多思想和代码优化的方法,正是困扰我多年的问题;
如果你要问我,对我生产中产生重大影响的书,不管以前我说过什么,但现在已经是这本了。
代码审核和优化必备。
thinkpad e450 —— Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz [Family 6 Model 69 Stepping 1]
永远不要忘记“两顶帽子”(一心二用)
写代码时发现某些代码不顺眼,想马上把它改正过来。啊,顶住诱惑,别那么做。重构时你的原则 之一就是保持代码的功能完全不变,因此在你做功能任务时不要加入重构。千万别让这些想法打乱你手上的工作,可以把要修改的想法和测试用例及其它重构,要补充的文档记录下来,等原功能任务完成了再去做这些事情也不迟。
重构就像在悬崖上的小径行走:只要有光,你就可以前进。你要坚信,重构是让程序世界越来越安全。
现实的检验
程序员不知道如何重构
重构的利兹是长远的,何必把时间花在当下呢(收获利益时,你已经不在职位上了)
重构可能 破坏现有程序
我的当前任务很紧张
如果代码有多位程序员共同拥有怎么办
当前代码有多个分支怎么办
如何安全地进行重构呢
相信你自己的编码能力
相信你的编译器捕捉错误
相信你的测试
相信代码复审(审代码,审编译器,审测试)
可是
程序员是会犯错的
有一些错误只与环境(作用域)有关
测试永远无法覆盖所有情况
代码复审也是人
要进行重构时,有必要为整个团队建立共识:
一个故事:两个陪我人车子在山顶附近抛锚了,于是他俩走下车子,一人走到车的一头,开始推车;经过毫无成果的半小时之后,车头那家伙说道 :我从来不知道把车子推下山这么难!另一个家伙答道 :嘿,你说推下山是什么意思 ,难道我们不是想把车子往山上推吗?
这个故事经常在软件开发过程中重演。
一知半解和情况下作出设计决策。