11

我在一个同时具有 GUI(图形)和 API(脚本)界面的应用程序上工作。我们的产品拥有非常庞大的安装基础。许多客户投入了大量时间和精力来编写使用我们产品的脚本。

在我们所有的设计和实现中,我们(可以理解)对保持 100%向后兼容性有非常严格的要求。当我们引入新的软件版本时,之前运行的脚本必须继续以完全相同的方式运行,无需任何修改。

不幸的是,这个要求有时会束缚我们的双手,因为它确实限制了我们创新和想出新的更好的做事方式的能力。

例如,我们可能会想出一种更好(并且更有用)的方法来完成已经可能完成的任务。最好将这种更好的方式设为默认方式,但我们不能这样做,因为它可能具有向后兼容性的含义。所以我们坚持将新的(更好的)方式作为一种模式,用户必须“打开”才能使用它。除非他们阅读文档或在线帮助(许多客户不这样做),否则此新功能将永远隐藏。

我知道 Windows Vista 刚问世时惹恼了很多人,因为所有的软件和外围设备都无法在它上面运行,即使它们在 XP 上运行也是如此。因此,它收到了非常糟糕的接待。但你可以看到,微软也成功地在 Vista 中进行了一些伟大的创新,但代价是为许多用户提供了向后兼容性。他们冒险了。它得到回报了吗?他们做出了正确的决定吗?我想只有时间会证明一切。

您是否发现自己在创新和向后兼容性的冲突需求之间取得平衡?你如何处理杂耍表演?

4

4 回答 4

5

就我的编程经验而言,如果我要从根本上改变一些会阻止过去传入数据被正确使用的东西,我需要为旧数据创建一个抽象层,可以将其转换为在新数据中使用格式。

基本上我将“改进”方式设置为默认值,并确保通过转换器它可以读取旧格式的数据,但将数据保存或存储为新格式。

我认为这里最重要的是测试,测试,测试。向后兼容性不应阻碍向前发展。

那只是我的2c

于 2008-10-02T05:37:21.337 回答
1

将开发分为两个分支,一个维护向后兼容性,一个用于新的主要版本,您可以清楚地表明向后兼容性正在被破坏。

于 2008-10-02T06:01:19.670 回答
1

您需要问的关键问题是客户是否想要/需要这种“改进”,即使您认为它是您的客户可能不想要的。一旦建立了某种做事方式,改变工作流程是一项非常“昂贵”的操作。根据用户的计算机熟练程度,可能需要很长时间才能适应 UI 的变化。

如果您正在与客户打交道,为了创新而创新并不总是一件好事,因为您开发这些改进可能会很有趣。

于 2008-10-02T09:45:28.697 回答
0

你可以寻找创新的方法来保持向后兼容性。

于 2008-12-05T22:09:42.877 回答