65.9K
CodeProject 正在变化。 阅读更多。
Home

代码的价值

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.02/5 (23投票s)

2004 年 6 月 28 日

5分钟阅读

viewsIcon

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版本的市场需求,那么你有三种选择:

  1. 逐行移植
  2. 重写整个内容
  3. 重构领域特定代码,然后编写/购买新的ASP.NET代码

第三种选择通常是最好的,因为它最能利用新平台的特性,并重用你拥有多年知识的领域特定代码。你可以通过购买实现所需功能的服务器控件来平滑过渡到ASP.NET。这种方法还可以让你识别出对你有价值的领域特定代码。当你需要移植到另一个更新的平台版本(Avalon和WinFS?)时,这些代码将是现成的。

软件开发者希望在他们的平台上看到最新最强大的功能,但当他们不得不更改或丢弃旧代码以利用这些新功能时,他们却会皱眉,这很有趣。现在看到一个不支持最新工具栏、菜单或XP主题的Windows程序,感觉很奇怪。对终端用户来说,它看起来就像20世纪90年代的软件。

代码会老化

如果开发者能学到一个教训,那就是——所有代码都会老化,其价值会随着时间贬值。代码会从资产变成负债。你能做的是编写能够考虑到这一点的代码。

总之,一些可以帮助你的建议是:

  • 了解你公司的核心竞争力。
  • 编写易于重构的代码。
  • 编写只做一件事的类。
  • 创建并维护UML图,至少针对类。
  • 将有价值的领域特定代码与平台特定代码分开,后者将会改变。
  • 尝试购买利用新平台特性的平台特定代码组件。
  • 尝试购买可以缩短产品上市时间的组件。

结论

随着软件开发平台的不断演进,它们将继续提供更多功能,无论是直接提供还是通过第三方组件。规划如何随着平台演进而调整你的产品开发策略,将有助于缓解一些痛苦。

© . All rights reserved.