你需要的不是重构,而是理清业务逻辑

开发 项目管理
最近我遇到了一位以前公司的同事。他提到了数年前我在那个公司曾经开发过的项目。他说这个项目现在已经变成了“职业杀手”。基本上,任何接触过这个“职业杀手”项目的人最终都会离开这个公司。

[[70437]]

最近我遇到了一位以前公司的同事。他提到了数年前我在那个公司曾经开发过的项目。他说这个项目现在已经变成了“职业杀手”。基本上,任何接触过这个“职业杀手”项目的人最终都会离开这个公司。如果公司想让名下的程序员人数>0,唯一的办法就是花数月时间完全重构这个系统。

对于这事我有两点要说。首先,在我离开这个公司前,这个系统的单元测试覆盖率已经达到了85%,所以,不要责备我。第二,这么大规模的重构?肯定会出问题。

每一个系统里都至少有一个成为人民公敌、让所有人害怕的组件。它承载了太多的任务,它拥有太多状态,太多的其它组件调用它。当时间到了偿还技术债务的时候,人人都会把目光投向这个组件。然而,如果你对这个组件只有一个不全面的理解,你放下所有工作来完全重构它,那你成功的几率会很小。这个组件,就就它表现出来的令人恐怖的程度和复杂相比,它的实际情况会比你想象更复杂,更恐怖。

你认为这个组件是如何发展成这样一个不幸的状态的?是因为公司雇用了一个笨蛋,让他肆无忌惮的往系统里增加复杂度?或是因为这个组件最初设计的太抽象,由于多年来需求的变更,它的责任范围不断的扩大?(出于个人的自尊,我宁愿相信这个“职业杀手”属于后者)。十有八九,这个组件变成如今这个恐怖的状态,都有由“聪明人”的一些“好意”造成的。如果你决定做一次大的重构,你实际是欠下了另一笔技术债务留给后人。

为了能真正的彻底偿还这笔债务,你需要去分解这个系统的复杂度。你需要花时间寻找所有调用这个组件的客户端。你需要花时间跟你的同事交流,了解这个这个组件的历史和它是如何被使用的。你需要简化这个组件的周边环境,看看它是如何运作的。每周,你都需要花更多的时间来更清楚的了解这个组件的业务。只要有足够长的时间跨度,你最终能理清所有复杂的问题。

从实际方法上说,这个问题应该怎么办?与其现在花3个整月的时间做一次完全的重构,不如先用一个季度的时间做清理工作。最后还是要重写,但有了3个月的计划准备,你有了时间去分析和设计。你有了时间来理清业务。

【编辑推荐】

  1. 如何做一个优秀的前端重构工程师
  2. 动态可重构的智能光载无线接入技术
  3. 对设计及重构的一点反思
  4. 再次重构代码
  5. 郭昂:漫谈重构

英文原文:It's Not Refactoring, It's Untangling

译文连接:http://www.aqee.net/its-not-refactoring-its-untangling/

 

责任编辑:林师授 来源: 外刊IT评论
相关推荐

2012-11-16 09:32:26

NoSQLMongoDB云服务

2014-09-01 15:15:33

MSN微软

2016-10-26 20:20:56

操作系统国产操作系统COS

2024-01-25 16:50:37

2020-09-07 19:40:06

监听Facebook手机

2012-05-15 01:16:19

开发重构Java

2023-07-03 07:21:23

软件敏捷编码

2020-02-12 22:20:39

人脸识别人工智能AI

2012-04-20 11:06:26

开发创新

2021-07-29 06:26:33

代码Activity开发

2021-11-26 14:37:44

数据库业务逻辑应用程序

2020-09-07 14:00:23

腾讯微博微信互联网

2020-06-17 16:38:22

Rust业务架构

2021-02-08 11:00:09

AI

2021-01-11 13:35:14

996职场互联网

2022-03-16 11:03:40

数据库元数据数据引擎

2016-02-26 14:49:24

AJAXWEB应用技术

2022-09-29 10:26:59

iOSScaffoldflutter

2021-08-19 15:47:46

数字化转型IT技术

2017-04-20 09:23:25

搜狗智能运维代替
点赞
收藏

51CTO技术栈公众号