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

标签: 需要 重构 业务 | 发表时间:2013-12-30 09:20 | 作者:banaba
出处:http://www.iteye.com

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

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

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

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

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

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

翻译自: It's Not Refactoring, It's Untangling 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [需要 重构 业务] 推荐:

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

- - 研发管理 - ITeye博客
最近我遇到了一位以前公司的同事. 他提到了数年前我在那个公司曾经开发过的项目. 他说这个项目现在已经变成了“职业杀手”. 基本上,任何接触过这个“职业杀手”项目的人最终都会离开这个公司. 如果公司想让名下的程序员人数>0,唯一的办法就是花数月时间完全重构这个系统. 首先,在我离开这个公司前,这个系统的单元测试覆盖率已经达到了85%,所以,不要责备我.

谷歌为何需要做好网购业务?

- - 焦点
  《连线》杂志网络版周二刊载文章称,谷歌需要做好网购业务,但很大程度上不是为了通过出售商品的方式赢利,也不是藉此使其业务变得多样化,而是为了让消费者愿意到谷歌网站上进行搜索,从而对其现有核心业务形成保护.   谷歌在许多业务领域中都是最好的从业公司,但到目前为止在购物业务领域中却并非如此. 据最近公布的一份调查报告显示,就在线购物而言,美国消费者先到亚马逊网站的可能性比先去谷歌网站高出十倍.

谷奥: Steve Levy 谈收购:Larry Page 显然需要摩托罗拉糟糕的硬件业务

- Lionheart - 谷奥聚合——谷奥主站+谷安 aggregator
SAI趁热打铁的采访了Steve Levy──揭秘Google《In The Plex》一书的作者. Levy为了写这本书花了数百小时跟Google员工打成一片,所以他知道的会比别人更多一些. 即便是如此,对摩托罗拉的收购依然让Levy感到震惊,他说这表明Larry Page这位CEO新官喜欢大想法,大首笔.

巨兽是如何倒下的:他们只是买下新技术,而不是依托技术去重构业务

- - 程序师
A16Z是一家风格独特的基金. 他们投了许多大胆的公司,也会经常分享对于技术和创投的看法. 今天我重看了他们的一份报告,Mobile is eating the world,有些新的收获. A16Z的创始合伙人Marc之前有个名句,叫Software is eating the world. 另一位合伙人Benedict接过大旗,开始鼓吹移动这股潮流对于技术和世界的影响.

代码重构

- - ITeye博客
随着程序的演化,我们有必要重新思考早先的决策,并重写部分代码. 代码需要演化;它不是静态的事物. 重写、重做和重新架构代码合起来,称为重构.    当你遇到绊脚石  ---  代码不在合适,你注意到有两样东西其实应该合并或是其他任何对你来说是"错误"的东西  -------- . 如果代码具备以下特征,你都应该考虑重构代码:.

Sunny谈重构

- - CSDN博客架构设计推荐文章
       按照软件工程大神Martin Fowler的定义, 重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,进而提高软件的可扩展性和可维护性. 这是重构的定义,简单来说就是不改变软件的功能,优化软件设计和代码,让软件更易于扩展和维护,当然也包括易于复用.

Google 需要性爱

- cantrip - 酷壳 - CoolShell.cn
看到一篇趣文Google Needs Sex,翻译过来. Brad DeLong 给我们写了 两篇关于“Google遇到的麻烦”的文章(墙),这两篇文章基本上是说, 制造网络欺诈和网络垃圾信息的人会尽其一切努力来和搜索引擎进行博弈,这样一来,其会让搜索到的结果对我们越来越没有帮助(译注:百度的竞价排名成为了制造网络欺诈和网络垃圾信息甚至洗脑的温床).

都需要过程

- Terence - 左岸读书_blog
我一直相信,这个世界所有的事情都建立在一定的规则之上,最根本的规则. 其上一切规则都要依次规则,一旦上层规则违背了底层的规则,则必然会出现问题. 而那些根本的规则,其实在最初我们就已经知道,只是无法意识到. 记得有一句好象是说:最初,看山是山,看水是水;然后,看山不是山,看水不是水;最后才发现,山仍然山,水仍然是水.

业务监控

- - 人月神话的BLOG
前面写了一些文章,包括移动BI,企业信息可视化,微信企业号,基于SNS移动应用协同等,这些都是个人认为企业后续信息化可能存在的机会点或发展趋势. 其中核心词汇将仍然集中在移动化,SNS化,可视化,无边界这些核心词汇和能力实现上. 当前我们看到不论是网管系统还是IT应用监控平台,其核心重点仍然围绕在IT基础设施和资源,数据库和应用中间件的监控和实时预警上,其更多面对的是IT运维和管控人员,而非业务人员.

谁需要瓢虫保镖?

- bill - 科学松鼠会
如果你觉得上面的图是瓢虫在抱蛋或抱蛹~那么你弄错了. 在瓢虫身体下面的其实是瓢虫茧蜂​​(Dinocampus coccinellae)的蛹. 瓢虫茧蜂会下蛋在瓢虫身上(它们尤其热爱七星瓢虫),然后瓢虫茧蜂会开始在瓢虫里面成长,但是不会杀死瓢虫. 直到他们要化蛹的时候,他们才会由瓢虫的腹部钻出来,并在瓢虫(仍然活着)的六足之间吐丝结蛹.