从金融学的角度看“重构”,从javaeye看到一篇文章,深表赞同。

来源:互联网 发布:知乎 女生 自由搏击 编辑:程序博客网 时间:2024/06/05 16:28

原文地址:  http://www.javaeye.com/topic/190154

作者  tuti

 发表时间:2008-05-06  

 

前些日子在InfoQ看到篇文章 "抛砖引玉——重构是必要的浪费" http://www.infoq.com/cn/news/2007/12/refactoring-is-waste.
文中认为 “重构并不能为客户创造可衡量的价值。所以将重构归为必要的浪费。
个人觉得这样的解读很牵强,也有悖于精益的基本精神。

我觉得问题核心在于重构对于客户创造了什么价值。
近日从金融学的角度来进行分析,略有所悟。

重构其实提供了“需求变化”的“看多期权”(call)--事实上还提供了其他多种变化的看多期权。需求变化的可能性越大,这份期权就价值越高。而在金融市场上充满了明码标价的期权交易。

以TDD的三步骤(不可运行,可运行,重构)为例,可以看做实现一个功能的“现货价值”并附加该功能需求变化的“看多期权”。 而只完成功能要求程序,不进行重构,只能看单纯含有一个功能的“现货价值”。
对于客户而言,附加有“需求变化看多期权”的程序价值要高于只含“现货价值”的程序。
对于“需求变化看多期权”最坏的情况也就是“需求不变化”,这份期权就没必要行使。
这就是“需求稳定项目(如:学校大作业)”和“需求总是与时俱进的项目”在开发行为上存在差异的原因之一。

事实上,我觉得软件项目开发,充满了时间序列上的发生的不确定性,项目的过程中需要不断的吸收这种不确定性,并追求项目达到更高的价值。这种情况很适合以金融学的视角进行分析。

原创粉丝点击