当您考虑升级开发工具时,向后兼容性对您来说有多重要?如果 Visual Studio 2010 需要对您的源代码进行重大更改,您还会购买它吗?在为新功能交易向后兼容性方面,您的转折点在哪里?
7 回答
虽然您从开发人员的角度提出了这个问题,但我认为对于您开发的软件来说,这将是一个更有趣的问题。所以我要回答这个问题。:)
向后兼容(更重要的是,未来兼容)的硬件和软件为您的用户提供安全感,尤其是在购买或升级 Windows 等平台时。如果不出意外,Windows 以其对向后兼容性的细致关注而闻名。您可以在 Windows Vista 上运行十年前编写的程序,只要它们“编写良好”(即不要使用未记录的 API),只会出现小问题。
另一方面,当您尝试引入新功能或彻底改变平台时,严格注意向后兼容性可能会束缚您的手脚。Apple 知道它的操作系统即将死去,在其最大胆的举措之一中,它购买了 NeXT 并决定将 NeXTSTEP 打造为新的 MacOS。在过渡期间向人们推销的关键之一是向后兼容的层 Classic。同样,当 Apple 决定改用 Intel 芯片时,一种在 Intel 上运行 PowerPC 应用程序的机制称为 Rosetta 以及通用二进制文件,允许人们在 PowerPC 和 Intel 之间自由移动,而不必担心应用程序丢失。
一件有趣的事情是,随着向 Intel 的过渡,Classic 环境消失了,但没有人真正关心,因为他们在前 5 年中从 Mac OS 9 过渡。因此,只要您有,最终就有可能放弃对遗留系统的支持一种迁移到新系统并为您的用户提供充足时间的简单方法。
在开发工具中,如果它不能完全向后兼容我以前的代码,我不会购买它,我怀疑有人会购买。坦白说,没有意义。如果我已经有一个编译器可以将我的源代码构建为适合我的可执行代码,那么我将使用它。为什么要更改我的代码以符合对工具制造商来说显然不是标准的东西?如果他们强制将源代码从一个版本更改到另一个版本,他们为什么还要费心使下一个版本兼容?
与源代码 100% 向后兼容是一项要求。唯一不完全要求的情况是不兼容的位是扩展;即特定于工具的 API 更改,例如 Eclipse 插件等。即便如此,我想要兼容性,但我意识到它不能完全被期望。但是如果你为基础应用/工具开发提供了一个API,并且懒得维护兼容性;好吧,那么,您显然对您的工具并不认真,我也不会为它们支付大笔钱。
对于家庭项目,向后兼容性真的不重要。对于办公室/企业来说,这绝对是至关重要的。
这取决于您需要支持哪些环境以及使用哪些可能兼容或不兼容的第三方工具。
例如,在我工作的地方,我们将所有人都从 VS2005 升级到 VS2008,除了我们的 BI 组,因为 SQL Server BI 工具与 VS2008 不兼容。更新后,他们升级到 VS2008。
在具体查看 VS 时,请记住 VS2008 可以针对 .NET 2.0、.NET 3.0 和 .NET 3.5。诀窍是要意识到它实际上以 .NET 2.0 SP1 和 .NET 3.0 SP1 为目标。因此,升级 IDE 不应要求您更改代码。
由于软件和硬件领域正在发生很多变化,我认为在构建解决方案时对新变化和更好的工具持开放态度是个好主意。比如90年代我们没有多核处理器和高端显卡或网卡,所以编译器和工具的优化目标自然是不同的。但与此同时,类似Visual Studio的工具正在尽最大努力适应旧的框架和应用程序。
我认为,如果我们期待一个更美好的世界,我们应该对不断变化持开放态度,直到这个行业超级成熟。(虽然可能不会发生在我们的一生中:))
一般来说,如果您正在开发一个平台,该平台将被许多其他用户不断使用来构建他们自己的产品,并且您计划长期开发该应用程序,那么这很重要。查看 PHP、Python、Eclipse 和其他非常重视向后兼容性的开源项目。在开发 n 层架构中使用的服务或其他开放 API 时,它也很重要。当您更改服务时,您可以让企业中的所有应用程序一直中断。
现在,如果您正在构建收缩包装应用程序或商业应用程序,那么它就不是那么重要了,因为每个版本都与其前身分开。
定义“重大变化”。如果可以通过精心设计的“搜索和替换”进行更改,即使它们很广泛,我也会这样做。
然而,这就是我会做的。我工作过的任何公司都会拒绝对现有代码进行任何更改。