BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

向管理层解释重构

| 作者 Mark Levison 关注 0 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2010年8月3日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

该如何向CEO及其他没有技术背景的人们证明重构的价值呢?

在一场主题为“Refactoring Justification Language”的讨论中,来自BigVisible的敏捷教练Adam Sroaka说到“重构是必要的,因为需求不可避免地会发生变化,这样代码也不可避免地要适应这种变化。当遵循良好设计原则的代码发生变化后,他们就不再遵循这些原则了。重构是这样一种技术:一旦代码修改后,我们可以通过重构不断改进代码的设计”。

来自CollabNet的Scrum认证培训师Michael James则关注于重构与测试优先的编程模式。他说,一开始编写的新代码总是有些凌乱,这样他和他的搭档就需要时间清理代码。

XP创始人之一的Ron Jeffries在一篇名为“Why is Refactoring a Must”的文章中说到,假如我们无法在为期两周的Sprint中交付Scrum项目所需的所有必要的基础设施,那么我们就得准备重构了,以此进行改进,否则我们迎来的将是一团乱麻,这会严重阻碍项目团队的进度。他还指出,Scrum与任何其他的敏捷方法的一个基本假定是需求会发生变化。如果需求发生了变化,那么就需要重构代码以清理留下来的乱摊子。

Michael James在“Refactoring Justification Language”的讨论中补充到:即便需求不会发生变化,重构也是必不可少的,因为我们一开始所编写的代码肯定不会是完美的

Mark Woyna建议到,我们应该看看汽车产业:每年,制造商们都会对汽车进行众多细小的更新,但只有很少一部分是最终用户的需求。有时,他们会修改某个零件以提高使用寿命或是降低花费。

此次报道表明:我们甚至都没必要和管理层讨论重构这个话题。重构应该是我们职业道德的一部分。每天早上的第一件事就应该是重命名或是提取方法,这就好像是工作之前的热身一样。

查看英文原文:Explaining Refactoring to Management

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

重构是敏捷开发者的基本技能! by 高 翌翔

作为一名敏捷开发者,重构是必备的基本技能!

就好比晚饭后你要收拾桌子一样自然,否则的话,蟑螂、老鼠就将成为你家的常客了!

重构不仅仅是技术问题 by 欲望 都市

当客户不希望改变,当管理层不希望改变的时候,研发人员首先要搞清楚不能改的出发点,然后再一起权衡是否有必要重构,否则单纯从保证代码完美角度出发去重构是有很大风险的!

Re: 重构不仅仅是技术问题 by 高 翌翔

重构概念的外延已经扩展了许多,当年 Martin Fowler 在《重构》一书中所指的是代码级的重构,
目的在于改善既有代码质量,而非修改功能接口、用户界面等。

我的理解是,文中提到的“重构与测试优先的编程模式”应该与 Martin Fowler 的《重构》概念是一致的。

准确地说,代码级重构是每位程序员必备的基本技能!

重构能力,是敏捷无法再一些企业顺利推广的主要阻力。很多开发人员不具备重构能力,尤其是比较大型的系统。 by Wang Carl

重构能力,是敏捷无法再一些企业顺利推广的主要阻力。很多开发人员不具备重构能力,尤其是比较大型的系统。

Re: 不愿重构以及敏捷实施受挫的根本问题在于人的思想本身的惰性! by 高 翌翔

记得对《架构之美》的作者之一 Michael Nygard 的简介这样写道:
Michael Nygard 总是愿意在那些全职的、真心投入工作的开发者(那些“觉醒”开发者)
身上花时间。在另一方面,他不能容忍缺乏兴趣和浪费潜力。

无须多言,前者才是敏捷实施的最佳实践对象,而后者根本与敏捷无缘!

在我看来,敏捷是匹烈马,只有那些勇敢而且真心爱她的人才能驾驭她!
否则,被她重重摔下来只是早晚问题罢了!

Re: 不愿重构以及敏捷实施受挫的根本问题在于人的思想本身的惰性! by Xiong Zichuan

作为开发商,不重构可以让我在短时间产生更大的交付能力,系统越来越烂以后我还可以重新推倒重来再赚一笔,我为什么要鼓励重构?精益化不从价值流的最初开始,敏捷永远难以为继。这里和人的惰性关系不大,关键还在于精益的思想没有贯穿整个价值流。

Re: 赚钱不止一种方式吧! by 高 翌翔

或许如您所说,短平快的项目的确可以这么做,可后果往往是收了钱,失了信誉!

确实靠坑蒙拐骗是可以赚到钱,可是要做大做强就需要良好的客户信誉,而良好的客户信誉离不开产品质量。

敏捷原则之一是提倡可持续发展!
无疑重构无法带来短期收益,但是从长期来看对程序员的能力提升以及产品质量都大有裨益!

至于您的公司采取何种发展策略完全是您来做主 :)

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

7 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT