你凌乱了吗
“兼容”在软件领域里面是一个无处不在的概念,说到兼容,我们可能曾经有听到某个人自信满满地说“我们的程序是向下兼容的”,亦或者有收到过来自他人的温馨提示——“你的代码需要保证向后兼容”,此时没有过多研究这些概念的我们一下子凌乱了:向前向后兼容是什么鬼?向前应该就是说兼容以前的吧?那向后就是兼容以后的,但是向上向下呢?啥玩意儿?不能说得通俗点吗?
通俗地说
好,我们现在就来通俗地讲一下这几个概念。
其实,这几个概念需要站在英语的角度来理解,不能按汉语来理解。
- 向前兼容:英语里面叫Forwards Compatibility,Forwards意为向前,即现在的版本对未来是兼容的。
- 向后兼容:英语里面叫Backwards compatibility,Backwards意为向后,即现在的版本对过去是兼容的。
- 向上兼容:英语里面叫Upward Compatibility,Upward意为向上,同Forwards Compatibility,即现在的版本对未来是兼容的。
- 向下兼容:英语里面叫Downward Compatibility,Downward意为向下,同Backwards compatibility,即现在的版本对过去是兼容的。
结合下面这张图会更容易理解:
可以这么理解:
- 把自己放在坐标系中原点的位置,向右和向上都表示面向未来,向左和向下都表示面向过去;
- 向前兼容和向上兼容,都是指面向未来兼容,即未来兼容现在,也就是说现在运行正常的功能,在未来也要能够正常运行;
- 向后兼容和向下兼容,都是指面向过去兼容,即现在兼容过去,也就是说过去运行正常的功能,现在也要能够正常运行。
总结
- 向前、向后、向上、向下都是指方向;
- 向前兼容和向上兼容是同一概念,向后兼容和向下兼容是同一概念;
- 一个程序如果始终保持向后(向下)兼容,那么自然也一直是向前(向上)兼容的。