优化后的代码怎么保障系统与原有功能的一致性【原】

优化后的代码怎么保障系统与原有功能的一致性?

考虑各系统和模块间功能的耦合性

先和当前优化点业务最熟的人员做沟通,询问改动点将会涉及到哪些系统及模块. 尤其当改动点是各系统及模块共享使用的东西时.

举例说明:车承保和公共在用Redis协同管理代理人信息,当对车承保做Redis优化,比如原有Redis主键名命名有不规范,直观地修改Redis主键名后会导致公共无法存取车承保对Redis设置的新缓存.

优化前要充份理解原代码的意图

只有对原代码充分理解后,才能开始动刀.不然很有可能因为原有某个细节上的操作,导致整套流程在特殊场景下阻塞或异常.

优化中尽量抽取复用性代码

随着时间的推移,人员的流逝,由于后来者之前代码的不熟悉,往往会考虑编写新的方法去实现原来已经存在该功能的方法,在考虑到有风险的前提下,尽量使用统一的出入口复用代码.

把不规范的方法名改成直观易懂的方法名.但尽量不要改动controller/action的类名和方法名(就算不合理),因为受限于框架本身原因,前台的js或dw可能会引用到该controller/action

合理地使用log日志.

优化中定期用SVN做版本归档

优化后一定要自测

尽可能多地考虑各测试分支场景,尤其是那些边界值的测试.且自测完后和测试组沟通影响地改动点.

举例说明:

 xxx

优化后尽量做性能比对

如果改动的是性能问题,能用柱状图或饼图显示前后性能比对,可以用loadrunner或jmeter等压测工具重新压测

举例说明:

描述网页按钮响应时间从几秒降低到了几秒.

Sql优化

尽量减少和数据库的交互,对常用数据或冷数据做缓存处理.

参考之前二代的ppt

使用任意形式流程图

不拘泥于形式主意,也不一定要美化PPT,只要能用图文清晰地表达已经理解的信息,就算目前自身无法解决当前问题,仍可用流程图做个汇总,让后置介入者尽量不要从零开始.

举例如下:

销管系统在手续费打包,代理人修改之后需要请求公共系统清redis缓存 , 现整理数据流图如下:

l  公共主要方法: BWriteEmpInfoServiceImpl.saveOrUpdate(入口webservice方法)

l  车承保主要方法: BWriteEmpInfoServiceImpl.saveOrUpdate(入口codelist方法)

 

酌情考虑版本大小

考虑优化周期和版本合并时对当前系统的影响大小和复杂性

考虑灾备措施

即是否会因为本次优化出现生产事故后紧急回退,数据库和业务代码.

举例说明:数据库新增或删除字段,没有考虑到数据补遗和在途数据,上生产后突发异常,考虑如何合理地备份和回退数据

原文地址:https://www.cnblogs.com/whatlonelytear/p/8378571.html