文档开发者中心
我的

关于代码重构的一些常见问题思考




有很多人反馈了重构相关问题。本文结合我6年时间的重构经验,简单的给出我的一些想法,供参考。回答很浅显,欢迎拍砖。



问题1:实际工作中,老代码缺少测试覆盖,以及当前现有代码场景分析不清的情况,如何破局?


答:针对测试覆盖不全情况,尤其开发者测试,唯一要做的就是补齐用例,这个没有捷径。但是针对场景不清,如何保证场景不遗漏,办法貌似也不多,只能看懂代码。如果代码也看不懂,和SE,项目组兄弟讨论。我们当前的场景非常复杂,以及很多代码非常晦涩,一个函数300行,花2,3个小时也看不懂,或者MDE也经常讲不明白,到底这个代码在做啥。只能真正搞清楚我们的代码现状,经常变化的地方在哪里,我们才能启动重构,没有捷径。


问题2:如何对一个项目做好架构,好的架构的主要特征有哪些?


答:架构这个词在很多地方都有,如果这里的架构是说几万以内的代码规模,我感觉,多用一些设计模式,设计方法,就能解决。如果是几十万或者以上的代码。那么飞虎队一直推荐使用4+1架构设计方法进行设计,主要包括:逻辑架构,运行架构,开发架构,部署架构,外加数据架构。推荐看温昱的《一线架构师实践指南》。


问题3:如何消化重构带来的工作量?


答:公司提出了现有产品,预留20%的工作量作为重构输入,但是在实际运作中,其实很难保证20%的专人投入,原因大家都明白。既然在保证不了的情况,作为一名有追求的committer,我们不能看着代码不管吧。我现在的团队做法可以参考,每个PL组,每个月在开发过程中,重构相关代码1K,全员参与,每人大概一个月100行。即不需要落需求管道,也让所有员工养成随时重构代码的习惯,我们运作了几个月,效果还是比较明显。当然这种重构很多都是函数层面,如果涉及到几K以上,需要设计重构,那么还是需要说服你的主管,落入需求管道。


本文系转载,作者:HW-ZT

点赞
5
收藏
6
回复
16
分享
举报
浏览3075 编辑于2019-08-08 03:39未知归属地
全部评论
最多点赞
最新发布
最早发布

你猜?我是先看帖还是先回复


16楼回复于2019-08-15 06:10 未知归属地

这个还蛮重要的,收藏了


15楼回复于2019-08-13 02:33 未知归属地

不要沉啊,这帖子我来顶一下!


14楼回复于2019-08-12 11:26 未知归属地

签到、看帖、回帖,来论坛必做的三件事!


13楼回复于2019-08-11 01:52 未知归属地

楼楼发的帖子都很不错啊,必须关注一下


12楼回复于2019-08-10 03:17 未知归属地

评论了,以后找起来也容易


11楼回复于2019-08-09 09:58 未知归属地

来的巧了,正想了解这方面的内容呢

10楼回复于2019-08-08 06:04 未知归属地

多谢楼主分享哦

9楼回复于2019-08-08 02:44 未知归属地

更新完毕!!!

8楼回复于2019-08-08 02:03 未知归属地

问题11:重构中测试防护网非常重要,针对短缺的部分如何补充,尤其现实的不够快速?


答:对于当前防护网不完美的情况,优先清理无效用例,再依靠覆盖率进行排查,哪些场景覆盖了,哪些还没有。一个个版本,慢慢补齐,每天做一点,就会补全的一天。


问题12:整改示例相对简单,对于实际开发中的问题,可以提供方向,但是方式,方法相对较少?


答:案例看起来比较简单,但是与我们实际代码其实还是很多比较类似,如果非要说差别,就是我们的代码其实比示例要复杂很大,但是重构思路,方法是完全一样的。我先前重构过的代码中,单函数300行,要MDE,SE一起讨论一天才明白咋回事的。但是一旦了解了具体业务内容,重构方法思路就是那些,在实际代码中实战几次,自然就熟练了。

7楼回复于2019-08-08 01:57 未知归属地
共2页
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。