前些日子在InfoQ看到篇文章 "抛砖引玉——重构是必要的浪费"
http://www.infoq.com/cn/news/2007/12/refactoring-is-waste.
文中认为 “重构并不能为客户创造可衡量的价值。所以将重构归为必要的浪费。
个人觉得这样的解读很牵强,也有悖于精益的基本精神。
我觉得问题核心在于重构对于客户创造了什么价值。
近日从金融学的角度来进行分析,略有所悟。
重构其实提供了“需求变化”的“看多期权”(call)--事实上还提供了其他多种变化的看多期权。需求变化的可能性越大,这份期权就价值越高。而在金融市场上充满了明码标价的期权交易。
以TDD的三步骤(不可运行,可运行,重构)为例,可以看做实现一个功能的“现货价值”并附加该功能需求变化的“看多期权”。 而只完成功能要求程序,不进行重构,只能看单纯含有一个功能的“现货价值”。
对于客户而言,附加有“需求变化看多期权”的程序价值要高于只含“现货价值”的程序。
对于“需求变化看多期权”最坏的情况也就是“需求不变化”,这份期权就没必要行使。
这就是“需求稳定项目(如:学校大作业)”和“需求总是与时俱进的项目”在开发行为上存在差异的原因之一。
事实上,我觉得软件项目开发,充满了时间序列上的发生的不确定性,项目的过程中需要不断的吸收这种不确定性,并追求项目达到更高的价值。这种情况很适合以金融学的视角进行分析。
--------------------------------------------------------------------
有人回复EMAIL,做点补充:
引用
Steven Mak <stevenmak@gmail.com>
回复 agilechina@googlegroups.com
发送至 敏捷中国 <agilechina@googlegroups.com>
你說的其實跟文中其中一位討論者差不多呢:
-------------
Dec 18, 2007 1:13 PM by Kent Beck
While it's true that refactoring doesn't deliver features to
customers, features aren't the only source of value in software.
Another source of value is the option value of the software--software
that could be made to do any one of five things next is more valuable
than software that can only be made to do two things next. Refactoring
can add to the option value of software. This perspective can also
help teams select the most valuable refactorings out of the seemingly
infinite pool of possibilities. Perform refactorings that add to the
set of available and useful options, defer those that don't.
此回复是在出现在该文的英文版中
http://www.infoq.com/news/2007/12/refactoring-is-waste
提出的时间也要早得多,本来还以为想出点新意,却原来早有前人。
分享到:
相关推荐
互联网金融伦理失范与伦理重构思考 一、金融伦理概述 ...在互联网金融这一新兴领域,必须从伦理角度出发,重构行业规范,保障市场稳定,促进资源合理配置,从而推动金融的持续进步和社会经济的均衡发展。
这篇论文主要探讨了股票市场中的两个核心问题:逆向选择和道德风险,从金融伦理学的角度进行了深入分析。作者指出,这些问题源于股票市场中的信息不对称,而解决这些问题的关键在于强化信息披露和建立道德伦理体系。...
敦煌网副总裁刘昊原则从跨境供应链服务的角度讨论了金融风险及其应对方法,提出将真实贸易数据留在线上,建立买卖双方的信用数据库,以此降低风险并推动贸易线上化。最后,安证通董事长周晓华阐述了电子合同在供应链...
在金融时间序列分析中,多小波可以帮助识别周期性模式和异常点;在声音信号处理中,多小波分析可以用于降噪和特征提取。 综上所述,这个MATLAB多小波程序集合提供了一个全面的工具箱,可用于进行多尺度、多角度的...
### 什么是C#及其学习意义 ...无论是从技术层面还是职业发展角度来看,掌握C#都是一项非常有价值的技能。它不仅能为你打开通往软件开发世界的门户,还能为你的职业生涯带来更多的可能性和发展空间。
阿里巴巴研究团队对此进行了深入研究,从技术层面、实践案例和产业趋势等多个角度进行剖析,旨在揭示智能经济的经济学含义、产业创新路径以及对日常生活和社会治理的影响。 智能经济的核心驱动力在于智能技术群的...
4. **小波分析的应用**:小波分析在许多领域都有广泛应用,例如图像处理中的噪声去除、信号压缩,以及在地震学、金融时间序列分析、医学成像等领域的异常检测。通过MATLAB,我们可以模拟这些应用场景,深入理解小波...
经济学家通常从经济角度定义全球化,强调经济生产、服务、消费的全球扩张,以及资本、劳动力和技术的跨国流动。 金融全球化表现为国际资金流动的增加,包括银行向国外提供的贷款数额大幅度增长。贸易全球化体现在...
- 作为金融科技专家,总结内容后,可以提出进一步的研究方向,如技术在金融领域的潜在风险、监管框架的完善或新兴金融科技的创新应用。 5. **资料搜集**: - 在特定领域(如SEO)搜集文章,有助于了解行业动态、...
从复合理论的角度,DevOps的实施需要在复杂环境中采用探索式模型,如Build-Measure-Learn,同时理解每个情境的特定需求,寻找适合的Good Practices,而不是追求Best Practice。此外,文件还讨论了DevOps实施的方向,...
小波包分析是小波分析的扩展,它允许在一个更广泛的频率区间内选择小波基,从而提供更精细的频率划分和信号重构能力。 6. **应用领域** - 在信号处理中,小波分析常用于噪声去除、信号检测和故障诊断。 - 图像...
从技术架构的角度来看,区块链可以分为公有链、联盟链和私有链三种类型。公有链对任何人开放,无需许可即可加入;联盟链则由一个组织或一群特定的机构控制,参与的节点是预选的;私有链是私有的,通常由单一组织控制...
王东亚从产业组织学角度分析了大宗商品电子交易市场的混乱状况,提出监管缺失是主要问题,并给出了针对性的对策。 乔银倡导的“合作社+龙头企业+平台”模式,旨在鼓励农户参与电子交易,通过提供全方位服务,优化...
这种方法允许我们从网络组织的角度来研究时间序列的动力学行为。该方法最早由物理评论快报在2006年提出(Phys. Rev. Lett. 96, 238701 (2006))。通过构建复杂网络,我们可以利用网络拓扑统计来全面地刻画时间序列的...
4. **小波系数与信号重构**:小波系数反映了信号在小波基中的投影,它们的重要性在于可以用于信号的重构。通过逆小波变换,可以将这些系数恢复成原始信号,实现信号的解析与重建。 5. **小波包分析**:小波包是小波...
从企业角度出发,为了适应财务共享中心模式下对财务人员素质的新要求,需要企业对现有财务人员进行培训和教育,提升他们的信息技术能力,增强其业务理解和分析能力,培养其跨部门沟通与协调能力。同时,企业应当鼓励...
网络经济有两种主要的理解角度:微观上,它被视为信息产业中的部门经济,涵盖通信网络、计算机网络等领域的经济活动;而广义上,它涵盖了基于全球信息网络的一切经济活动,包括物质与非物质层面。 网络经济的一个...
无论是从入门学习的角度还是从实际开发的角度来看,Java 都是一个值得投入时间和精力去掌握的语言。通过学习 Java 的基本概念、特性和常用工具,开发者不仅能够开发出高质量的应用程序,还能够在不断发展的技术领域...
学者们从时空约束、资源整合、组织结构、治理结构等角度分析了互联网影响区域创新的机理。同时,有研究指出,只有具有足够吸收能力的公司才能从广泛的互联网应用中受益,从而提升其创新绩效。互联网技术的应用不仅...