传统兼容性的最佳实践

5
根据我的经验,对向前/向后兼容的承诺是软件工程行业的“镀金鸟笼”。我特别观察到这种情况在文档文件格式和编程语言/API 上尤为突出。客户和合作伙伴讨厌现有数据或代码的破坏;但是,如果您永远不打破兼容性,长期来看,您的创新能力将受到严重限制。
除了逐渐淘汰旧功能之外,是否有其他解决此问题的方法?像Windows 7的XP模式一样的虚拟化似乎是一个令人兴奋的可能性。还有其他方法吗?
此外,对于那些想要设计尽可能具有未来可靠性的新系统的人,我们可以从过去在行业中犯下的错误中学到什么教训?
3个回答

5
通过扩展而不是重写公共API进行创新。具有一致的通用公共接口以支持后端功能。只要您向公共API模块提供它们期望的结果,就可以随时重写私有模块。

在后端进行改进,尽可能保持API的一致性。在扩展API的公共部分时,请创建新模块并清晰地记录它们,如果您添加的新方法作为旧方法的补充,则自然会弃用旧方法。

对于文档格式,请始终包含版本号,并确保有方法支持所有现有版本。与API一样,通过扩展而不是重写来添加新功能。

当您想要对软件的整体架构进行根本性更改时,请将新版本作为模块包含在旧版本中-这将增加大小,但更好地支持旧数据和程序。


0

使用XML作为文件格式的基础,并且只添加到规范的DTD,不要删除。这样,您的文件应该向后兼容早期版本,这是一个优点。


0
这里有一个很好的例子:使用SLF4J Bridges在Java中允许轻松迁移从一个日志模块到另一个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接