coding-style - 是否有一种方法可以避免有时强加于我们的向后不兼容?

标签 coding-style backwards-compatibility methodology

有时,第 3 方库在更改界面时会造成严重破坏。在某些语言中,它甚至发生在语言层面。

是否有可能以一种可以防止它发生的方式编写我们的代码?

例如,我可以想到一种方法 - 编写自己的包装函数。
这样,更改将局限于一个函数。但话又说回来,它会产生很大的开销。

你有什么想法吗?

最佳答案

基本上,您包括某种版 native 制(通常具有比低/高版本限制更多的粒度),并且您尝试保持接口(interface)分离和“正交”。但是很大程度上取决于您在界面的哪一侧。在“消费者”方面,您只能做这么多。

IBM System/38 及其后代设法保持兼容性,使得在第一个版本上编译的程序在 30 年后仍然可以运行,无需重新编译(并且通过机器指令集的两次修订,第二次修订非常激烈)。但这是一个非常好的(虽然不完美)原始设计的不寻常案例,结合相当强烈的动机(在系统上花费大量美元的大型银行)来保持兼容性。

在个人电脑层面,许多系统设计人员并不真正关心,因为不兼容销售更多的软件升级,这反过来又销售更多的硬件。

关于coding-style - 是否有一种方法可以避免有时强加于我们的向后不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8583072/

相关文章:

java - 当一些私有(private)方法不依赖于实例时,将它们声明为静态是一个好主意吗?

coding-style - 处理一些灰码样式问题

php - 使用 php/ajax/mysql 将记录添加到数据库中的最佳方法?

c - 如何处理条件初始化,这是一种好的做法吗?

javascript - JSLint 说缺少新关键字

java - 如何通过不允许 java 泛型中的原语来保持向后兼容性

ios6 - 如何让应用兼容 iOS 6 和 iOS 7?

android - 为旧操作系统版本设置通用按钮样式

java - 将自定义持久层迁移到 hibernate3

uml - 对象模型在领域驱动设计中的重要性