关于软件重构

实现的妥协

记得刚开始工作那会,也正好是项目刚起步不久,我总是觉得公司原有的代码脏乱差,架构混乱,完全不符合我们在书上看到的标准。一直有把项目代码重构一番的念头。
工作几年后开始逐渐明白了一个道理,写代码不是造艺术品。代码的本质是功能的实现,在bug可控,能满足用户需求的前提下,其实并不需要那么完美。
打造完美的代码是需要成本的,在项目前期,人少活多,一个人顶三个人用,怎么也写不出花样来。这个阶段主要的目标就是尽快实现功能,抢占市场。那在设计和实现上必然会有妥协。

该不该重构

当你想重构现有代码的时候,需要问自己三个问题

  1. 重构的目的是什么?
    为了换新框架增长技能还是对项目真的有益
  2. 现有的架构是否严重的制约了后续功能的开发和性能支撑?
    如果是,那重构就非常有必要。在项目进行到某一阶段的时候,由于产品的策略调整,会带动功能在原有的基础上有较大改动。如果现有架构无法满足新策略,那么就到了必须要重构的时候。但前提是重构后的代码结构确实要优于现有的,所以重构前要做充分的评审。
  3. 是否有时间,有人力去重构?
    即使满足上面的第一条件,但是项目上根本就不给足够的时间和人员去做这个事情,那也是无法完成的。从新架构的设计到评审,需要花费很多的时间。在重构的过程中,还得将原有的功能保质的迁移过来,又得花费很多的时间。后面还得加上回归测试的时间等等。这些成本的消耗,老板是否买单呢?
    重构是一个比较重大的决定,牵扯到项目的方方面面。不是可以由技术人员单方面去决定是否能重构的。当然,如果真的很闲,重构不失为一个充实工作,提升技术的好方式。

如何实施重构

决定重构后,如何实施?
从我个人的实践经验来看,代码重构需要提前规划和布局,才能优雅的进行。项目技术负责人需要尽量提前预知在未来什么节点下,当前的架构无法满足业务,并提前协调资源开始规划重构。整个过程可以有以下两种模式:

  1. 整体重构,一气呵成。将团队分成AB组,A组继续在当前分支开发,满足业务发版本的需求。B组负责在新分支上在新架构的基础上开发并迁移旧功能。当B组的功能完成并测试通过过,AB组合并,在新架构上开发。
  2. 局部重构,小步前进。在项目的新功能采用新架构,同时兼容旧功能。在产品迭代的过程中按功能模块逐步迁移旧功能。

上面的方法不一定适用在所有的项目组,具体情况还得具体分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值