zoukankan      html  css  js  c++  java
  • 优化后的代码怎么保障系统与原有功能的一致性【原】

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

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

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

    举例说明:车承保和公共在用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方法)

     

    酌情考虑版本大小

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

    考虑灾备措施

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

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

  • 相关阅读:
    Azure Functions(一)什么是 ServerLess
    Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
    Azure Terraform(六)Common Module
    Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
    Azure Terraform(四)状态文件存储
    Java | zuul 1.x 是如何实现请求转发的
    Go | Go 结合 Consul 实现动态反向代理
    Java | 在 Java 中执行动态表达式语句: 前中后缀、Ognl、SpEL、Groovy、Jexl3
    宝,我今天CR了,C的什么R? 走过场的CR
    被监控轰炸了,不得不使出绝招
  • 原文地址:https://www.cnblogs.com/whatlonelytear/p/8378571.html
Copyright © 2011-2022 走看看