为什么程序员一言不合就重构代码
当你看到前任写成一团毛球的代码块;新增几行代码需先捋半天逻辑的超级大函数;好不容易在迷宫里找到方向,小心翼翼地添加上新代码,却将别的调用系统给弄垮时;还有运行缓慢的老系统……
此时程序员只有两个选择: 要么忍,要么重构**。**
忍是有极限的,重构的“三次法则”表示:程序员第一次看到乱代码可以绕过去,先将手上的代码堆好;第二次再碰上这块,心里虽反感但再一次勉强绕过;第三次肯定忍不住动手。
以下的场景是不是很熟悉:
测试:这么小的功能,你为什么改动300多个文件?
开发:嘿嘿嘿,我顺便将老代码挪了地方。
测试:你知道这给我增加多少测试工作量吗?那些我都得回归一遍。
开发:不用测试,没有风险的,我就整理下代码。
测试:你上次也这么说,结果偷偷改了某接口,影响到下游系统。还有那次啊你……
产品:你又在弄重构?我这还有一大堆需求没人开发。
开发:我这的重构系统也非常重要的。
产品:哪里重要了?你浪费这么多人力重构,用户也看不出来系统有什么变化,搞不好还弄坏老功能。求求你别重构了。
开发:我……
虽然重构不被其他角色认可,但你的程序员同事会理解和感谢你的,重构是优化代码设计,使代码可读性更强。
只是重构是个大坑,不小心就掉坑里。
Part.2
“等重构完这个系统,我就提离职。”龙哥说。
由于核心系统初期设计不当,权责界限模糊,只要沾点边的代码都往上堆,造成系统过于庞大,逻辑混乱,一出现问题,造成核心业务瘫痪。
过老过大过中心的系统像个不定时炸弹,吃过几次亏后,业务组决定拔掉这隐患:将系统重构,按照业务处理逻辑拆分成各功能单一的子系统,降低耦合度。
大伙把这事当作季度最重要的计划来开展:热火朝天的开会划分系统,梳理代码逻辑,安排测试,声明注意事项。
各人领了任务后,开始埋头苦干起来。
但是重构系统像从一个大迷宫捋线路,捋的过程耗费巨大,而且极易遗漏。产品后来提的新需求直接在重构后的系统里新增。开发团队进入恶性循环:新增功能有的人在老系统分支改,有人在新的改,导致提交的代码分支混乱,搭建过程缓慢,计划的任务delay,最后测试人员发现很多遗漏点,又返工重构。
大家不断埋头地捋代码,重构,测试,想百分百完美地完成任务,而忽略整体项目进度的把控。
上线时间从9月份推迟到12月份,再到年后,最终来年6月份系统才上线完成,耗时一年多。
每个人被重构折磨得疲惫不已,还短时间看不出来效果,可已经投入人力物力,大家只好硬着头皮往下走。
后来大家已经想不起当初为什么要重构,到底要重构到什么样子,只想着这重构何时到头,什么时候才能解放。
从重构半年时开始有人离职,到上线时仅剩一个原项目组的产品,他说这项目终于结束,我也该走了。
Part.3
上面的重构没有合理的项目规划,还犯了重构的大忌:边重构代码边新增功能,这样相当于将原系统推翻重做,风险极大。
那么该如何合理的安排重构呢?
**
**
1. 遵循“两顶帽子”重构原则
在重构时,两个不同的操作分开进行:重构代码和新增功能。
先在不改变原系统功能的基础上修改现有代码的
- 原文作者:知识铺
- 原文链接:https://geek.zshipu.com/post/%E4%BA%92%E8%81%94%E7%BD%91/%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A8%8B%E5%BA%8F%E5%91%98%E4%B8%80%E8%A8%80%E4%B8%8D%E5%90%88%E5%B0%B1%E9%87%8D%E6%9E%84%E4%BB%A3%E7%A0%81/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com