兼容性的一些思考

现状:
痛点:

  • 兼容性问题不容易被发现:当前开发模式基本上都是基于安装模式开发。 出了问题基本上都是beta,生产等重要环境,非常严重。
  • 降低代码质量:为了兼容性不得不写一些非常怪的代码,不利于可读性。
  • 修改问题单,开发新特性的成本增加:修改任何问题之前都要思考是否会引入兼容性问题。
  • 严重:代码上的一些不良实践。随着时间推移累积的兼容性问题必将成为NO1的质量问题。

平台目前处理:

  • 见招拆招:基本依赖于开发人员的知识经验,缺乏规范和有效的工具和思路去识别和处理。
    兼容性升级手段:数据库脚步升级,app自动导入(本身也面临着兼容性问题)
  • 代码处理:不断增加判断分支,不同的特性需要兼容的处理千差万别,无法梳理通用经验和自动化手段;易出错,或者无法处理,只能在使用体验上妥协。

一些基本原则
开闭原则:“开”指当原有的功能不满足新需求时,允许增加新的功能实现目标。“闭”指原有代码的修改是封闭的,即修改原有的代码对外部的使用是透明的。
这是一个处理兼容性问题的时候大多数采用的原则,大家都普遍意识到:“只要不动原来的东西,原来的代码的行为就不会出错”。
但是一味地新增也会带来代码难以管理的问题。我们在日常编码过程经常会遇到这样的情况:我开发了一个功能,当我基本验证完了之后会提交到svn。之后我可能又会进行优化,但是在优化的过程中又做了诸多改动,但此时发现由于优化而导致功能不可用了,这时候我们会选择回退到之前的“版本”。
“版本”这个概念我们也可以利用到我们平台的特性当中。我们遇到的兼容性问题,无非就是老的数据在新的程序上跑不了了,那我们为何不让老的数据在老的版本上跑,而新的数据在新的版本上跑?
切入点
为每个关键元素加version:做到这点并不难,选定一个发布的版本作为所有元素的基础版本号,创建的元素数据都带有这个版本号。以后该类元素特性有变更,则更换基础版本号,以后创建的元素数据就带有新的版本号。
如何做版本适配:
例如,Basemodel(01H2,没有继承模型属性actual_model_id)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值