正确理解向前兼容、向后兼容、向上兼容、向下兼容

三味码屋 2021年09月10日 4,859次浏览

你凌乱了吗

“兼容”在软件领域里面是一个无处不在的概念,说到兼容,我们可能曾经有听到某个人自信满满地说“我们的程序是向下兼容的”,亦或者有收到过来自他人的温馨提示——“你的代码需要保证向后兼容”,此时没有过多研究这些概念的我们一下子凌乱了:向前向后兼容是什么鬼?向前应该就是说兼容以前的吧?那向后就是兼容以后的,但是向上向下呢?啥玩意儿?不能说得通俗点吗?

通俗地说

好,我们现在就来通俗地讲一下这几个概念。
其实,这几个概念需要站在英语的角度来理解,不能按汉语来理解。

  • 向前兼容:英语里面叫Forwards Compatibility,Forwards意为向前,即现在的版本对未来是兼容的。
  • 向后兼容:英语里面叫Backwards compatibility,Backwards意为向后,即现在的版本对过去是兼容的。
  • 向上兼容:英语里面叫Upward Compatibility,Upward意为向上,同Forwards Compatibility,即现在的版本对未来是兼容的。
  • 向下兼容:英语里面叫Downward Compatibility,Downward意为向下,同Backwards compatibility,即现在的版本对过去是兼容的。

结合下面这张图会更容易理解:

兼容的概念.png
可以这么理解:

  • 把自己放在坐标系中原点的位置,向右和向上都表示面向未来,向左和向下都表示面向过去;
  • 向前兼容和向上兼容,都是指面向未来兼容,即未来兼容现在,也就是说现在运行正常的功能,在未来也要能够正常运行;
  • 向后兼容和向下兼容,都是指面向过去兼容,即现在兼容过去,也就是说过去运行正常的功能,现在也要能够正常运行。

总结

  • 向前、向后、向上、向下都是指方向;
  • 向前兼容和向上兼容是同一概念,向后兼容和向下兼容是同一概念;
  • 一个程序如果始终保持向后(向下)兼容,那么自然也一直是向前(向上)兼容的。