传统兼容性的最佳做法

Rex*_*exE 5 architecture legacy compatibility

根据我的经验,对向后/向前兼容性的承诺是软件工程行业的镀金笼.我特别注意到文档文件格式和编程语言/ API的情况.当他们现有的数据或代码中断时,客户和合作伙伴讨厌它; 但是,如果您永远不会破坏兼容性,那么从长远来看,您可能会严重限制您的创新能力.

除了逐渐弃用旧功能外,是否有解决此问题的方法?在Windows 7的XP Mode中,虚拟化似乎是一种令人兴奋的可能性.还有其他人吗?

此外,对于我们这些想要设计尽可能面向未来的新系统的人,我们可以从过去在行业中犯下的错误中吸取什么教训?

luv*_*ere 5

通过扩展而不是通过重写公共API来创新.为后端功能提供一致的通用公共接口.只要您为公共API模块提供他们期望的结果,您就可以随时重写私有模块.

在后端进行改进,尽可能保持API的一致性.在扩展API的公共部分时,创建新模块并将其清楚地记录下来,如果您提供新的更好的方法来完成旧方法的补充,那么旧方法的弃用将自然而然地发生.

对于文档格式,请始终包含版本号,并确保您有方法支持所有现有版本.与API一样,通过扩展而不是通过重写来添加新功能.

如果您希望对软件的整体架构进行根本性更改,请将新版本包含旧版本作为模块 - 这将导致更大的尺寸,但更好地支持旧数据和程序.