代码的价值






4.02/5 (23投票s)
2004 年 6 月 28 日
5分钟阅读

62998
代码常常被高估,需要一种迁移策略。
引言
代码的价值常常被高估。随着软件技术的发展,代码往往是负债而非资产。理解这一点以及代码如何老化,对于编写出色的软件至关重要。
创建内部代码库
1992年我获得计算机科学学位毕业时,我对面向对象和组件技术非常看好。在我第一家公司,项目一片混乱。代码质量很差,几乎没有架构,多个人复制粘贴代码来创建电子表格或树形结构。最终结果是产品被搁置了。
我力争建立一个代码库项目,为电子表格、树形结构、自定义窗口控件、对话框、打印预览等构建C++组件库。该项目非常成功,并在多个产品中使用。但随着MFC开始包含打印预览等功能,其价值不断下降。该库的另一个问题是,你必须说服开发人员使用它,并克服“非我发明”的心态。
总的来说,内部代码库取得了巨大成功,它显著缩短了产品开发时间,并带来了更可靠的产品。
第三方代码库
其他人也看到了代码库的价值,并开始为常见任务创建组件和代码库。当Visual Basic发布时,该产品的核心价值体现在成百上千个可用的VBX控件上。你可以花大约250美元购买一个电子表格控件,其功能与我们花费约15,000美元编写的控件相同。
快进到今天。访问componentsource.com或xtras.net,有数千个可用于不同开发平台的组件库。更重要的是,这些库最终解决了它们早期产品在代码可靠性和稳定性方面的问题。另一个趋势是,Visual Studio、Eclipse、Office等环境为开发人员提供了另一个构建平台。
还有一个因素是像CodeProject等代码网站,以及开源软件,它们提供了大量的可用源代码库。所有这些因素都改变了自己编写代码的方程式。
底线是——与20世纪90年代相比,现在你应该编写的代码量应该非常少。为什么?编写一个供应商只卖几分钱的代码有什么意义?
这并不是说代码毫无价值,但代码不像陈年美酒,不会优雅地陈年。说我的产品有200万行代码,花了3年开发,这并不是衡量产品价值的标准。你编写的事务监视器代码(5万行)现在是任何J2EE服务器的一部分。
将代码的重点放在你的核心竞争力上
公司需要根据核心竞争力领域做出决策,决定哪些代码有价值,哪些代码可以丢弃,甚至最好永远不要写。创新代码可以让你抢占先机,但很少能带来可持续的优势。你需要寻找品牌、合作伙伴关系等其他方法,利用抢占先机的优势成为市场领导者。
例如,如果你的公司核心竞争力是编写打印机驱动程序,那么购买有助于构建用户界面的Visual组件就有意义。这样,当出现针对新平台的新工具栏时,你就可以利用它。在这种情况下,开发和维护自己的UI库是没有意义的。你应该更多地关注打印机驱动程序代码,这能为你的公司带来利润。
除非你有一个像Windows这样拥有大量遗留代码的成功产品,否则最好让代码“死亡”,并通过重构等方法以不同的形式“复活”。
从ASP迁移到ASP.NET
假设你已经使用ASP开发了一些Web应用程序。首先,你需要找出你的客户是否需要ASP.NET版本。如果是,为什么?什么时候需要?他们期望ASP.NET版本有哪些ASP版本没有的功能?
如果存在对ASP.NET版本的市场需求,那么你有三种选择:
- 逐行移植
- 重写整个内容
- 重构领域特定代码,然后编写/购买新的ASP.NET代码
第三种选择通常是最好的,因为它最能利用新平台的特性,并重用你拥有多年知识的领域特定代码。你可以通过购买实现所需功能的服务器控件来平滑过渡到ASP.NET。这种方法还可以让你识别出对你有价值的领域特定代码。当你需要移植到另一个更新的平台版本(Avalon和WinFS?)时,这些代码将是现成的。
软件开发者希望在他们的平台上看到最新最强大的功能,但当他们不得不更改或丢弃旧代码以利用这些新功能时,他们却会皱眉,这很有趣。现在看到一个不支持最新工具栏、菜单或XP主题的Windows程序,感觉很奇怪。对终端用户来说,它看起来就像20世纪90年代的软件。
代码会老化
如果开发者能学到一个教训,那就是——所有代码都会老化,其价值会随着时间贬值。代码会从资产变成负债。你能做的是编写能够考虑到这一点的代码。
总之,一些可以帮助你的建议是:
- 了解你公司的核心竞争力。
- 编写易于重构的代码。
- 编写只做一件事的类。
- 创建并维护UML图,至少针对类。
- 将有价值的领域特定代码与平台特定代码分开,后者将会改变。
- 尝试购买利用新平台特性的平台特定代码组件。
- 尝试购买可以缩短产品上市时间的组件。
结论
随着软件开发平台的不断演进,它们将继续提供更多功能,无论是直接提供还是通过第三方组件。规划如何随着平台演进而调整你的产品开发策略,将有助于缓解一些痛苦。