程序的实现,经常会随着时间的推移不断的变化。
不断变化的实现,经常又需要兼容以前的实现。
本文试图在这方面做一些探讨。
所谓兼容,指的是新版本的软件能够原封不动的接纳旧版本的配置文件、命令行参数、程序间交互消息、函数接口调用等。
下面分几个方面来探讨。
一、程序间交互消息的兼容性
这方面的兼容性,internet协议做得非常漂亮。
有的人可能喜欢从0或1开始编号。但这样的不好之处是,未来可能会发现旧版的设计没有考虑周全,这些起始的小数字,应当留做别的用途。但为时已晚,使用这些定义的软件,已经得到广泛的部署运行,并且这些系统的升级与否,是自己无法左右的。就像internet上各种流行协议(如以太网、TCP/IP、http等)的设计,大量的设备都在按照已发布的规范进行运作。若想修改一个编号的定义,是不现实的。可能存在大量的公司服务器、PC机、手机,这些设备的操作者并不去更新协议栈、浏览器、ftp等软件。
所以,在定义这些常量时,可以假想这些定义,一经发布,就基本没有机会修改了。因此,不妨将数字的宽度放大一点,同时可以考虑预留一些编号范围