在软件升级的过程中,经常有一个问题,即软件是否应该向下兼容。
我有幸经历了组里项目引擎升级的过程。在升级引擎的过程中,我一直有这样的疑问,却没有想明白,直到于有一天,我想起一个很基本的问题:升级引擎的目的是什么?
一般来讲,人做一件事总是有目的的。吃饭是为了吸收营养,喝水是为了解渴。软件升级也不例外,最初决定升级引擎的时候,给出的说法是这样的,“为了保持和延长项目的生命。项目开始时采用的那些技术在现在已经是落后的了,而这个项目至少还有几年的生命。如果现在不做一些软件升级的事情,将来的软件维护和升级会更加困难”。初听很有道理,乍一想却毫无道理,这好比是在说,为了升级而升级,或者说,这次升级软件的目的是模糊的。
的确,与时俱进的软件常常有顽强的生命力。但升级软件始终应该有一个目的,有了目的,才知道一些选择应该如何取舍。通常来讲,软件升级的目的一般是为了获得某些新的特性,也就是说我们的目的不是提升软件的版本号,而是为了获取新功能。这时候,或许可以采取部分部分模块的方式,而其他部分则可以保持原样。有时会遇到一些兼容性问题,有可能新的特性是旧就功能冲突的,相信这个时候你就需要仔细考虑自己的目的,究竟孰轻孰重,应该如何取舍,新的特性是否能体现出足够大的价值,而保留旧功能是否违背了软件升级的意义。一般来说,一些程序在升级的过程中会保留旧的api,他总需要保留自己的用户。毕竟,编写软件的最终目的是为了用户的使用。反过来,如果我们最终的用户并不是程序人员,那么保留旧的api和代码还有多少意义?是否还必须保留?多数情况下,我们使用各种技术和手段来实现用户的需求,完成最终的产品。用户只是通过ui交互来使用软件,这样的情况下,也许向下兼容的意义可以理解为保留软件原有的业务功能,实际上程序是可以进行大刀阔斧的改变,前提是你得有足够的能力,你必须“不行损害之事”。而这往往是很难的,所以才有这样的说法:最好让软件保持原状。
原文地址:https://www.cnblogs.com/afraidToForget/p/9532156.html