美文网首页让前端飞
关于软件重构

关于软件重构

作者: foreverpx | 来源:发表于2018-08-23 23:31 被阅读2次

实现的妥协

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

该不该重构

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

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

如何实施重构

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

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

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

相关文章

  • 关于软件重构

    实现的妥协 记得刚开始工作那会,也正好是项目刚起步不久,我总是觉得公司原有的代码脏乱差,架构混乱,完全不符合我们在...

  • 关于软件重构

    从开发编码伊始,重构的事情就一次次被提起。重构的基本操作往往是利用项目间隙,或者项目空闲时间,对代码做优化,做结构...

  • 重构

    为何重构? 1.重构改进软件设计 2.重构使软件更容易理解 3.重构帮助找到bug 4.重构提高编程速度 何时重构...

  • 什么情况下要重构

    1 重构的目的 1.1 重构的定义 软件设计大师 Martin Fowler 是这样定义重构的:“重构是一种对软件...

  • 《重构》一书经典总结(一)

    《重构》一书经典总结(一) 为何重构 1.重构改进软件设计2.重构使软件更容易理解3.重构提交稿编程速度4.重构帮...

  • Android端重构记录

    关于重构的一些话 为什么我们需要重构? 重构改进软件设计 只为了短期目的或者在完全理解整体设计之前编写出来的代码,...

  • 《重构》-第二章 重构原则 摘录

    最近在重新读《重构》这本书,关于第二章 重构原则,我摘录出一些要点,和大家分享一下。 重构:对软件内部结构的一种调...

  • 为什么要重构?何时去重构?

    核心:重构是在不改变软件可观察行为的前提下改善其内部结构。 为什么重构? 重构改进软件设计:如果没有重构,程序的设...

  • 书单

    1.关于重构 闲扯重构

  • 转载

    关于软件设计方面的书很多,比如《重构》,比如《设计模式》。至于软件开发方式,那就更多了,什么极限编程、精益方法、敏...

网友评论

    本文标题:关于软件重构

    本文链接:https://www.haomeiwen.com/subject/doeviftx.html