最近有些心得(并且我认为每一条都很重要! 很重要 很重要!
),特此唠叨总结一下。
让我们带着问题来看
- 如何保证代码bug率无限低?
- 如何保证线上出问题概率降至无限小?
- 如何提高工作效率?
开发前
- 需求评审时候(一定要提前看需求设计与原型图),多沟通,多思考,不要人家说什么都无脑答应,应该有自己想法,要考虑对方说的是否合理性,是否与现有逻辑相悖
- 仔细研磨原型图,业务逻辑一定要熟知,把每一个细节尽可能想清楚并写出来
- 架构设计,表设计以及代码实现设计,需要深思酌虑,代码逻辑实现最好画出图,如 常见的 uml 时序图,架构的话画出架构图,技术栈一定要想清楚,不要选择最牛逼,最高大上的,而是选择最适合的
开发时
- 每一行代码要知道其风险,遵循干净,稳定,可拓展,好排查的原则
考虑数据量大时候,或者流量瞬间猛增时,你打代码是否能承受的住?如果承受不住 需要做处理 如 ( 异步,队列,多线程,分批思想,缓存,db分片 等等)
尽量规范化 包括命名规范,代码规范,适当时候使用设计模式,分层规范,项目结构规范等。
- 日志打印时候,不要不打,也不要打印很大的对象,比如长度很长的集合,很大的sql 等 这样刷屏会刷到怀疑人生,因为我亲尝过
- 必要情况下,造数据,进行压测
测试时
- 对每一行代码都必须测试!!! 对自己可以自信,但是对自己写的代码,切勿自信! 测试后再有自信也为时不晚!!!
- 对新开发的,或者 修补的代码 更需要测试(尤其是改动较多时候,一定要测试,很有可能有潜在bug) 归为一句话 不要相信每一行没测试的代码!!!
- 一定要对重要代码,逻辑复杂代码进行单元测试,写好test是保证代码正确的有效途径,也是提高效率的必要措施
- 测试方法: 如果是在dev环境,单元测试尽量覆盖每一个逻辑分支。覆盖每一个case
- 测试方法:如果是在非本地环境,那么可以修改配置文件为对应环境的配置,然后再本地启动,从而模拟出问题的环境来排查bug.
- 测试方法:必要情况下,造数据,进行压测
上线时
- 上线前的清单一定要列好,好记性不如烂笔头,列好清单 (各种apollo配置 op sql ddl 执行的先后,mq的topic,分支拉取以及合并 maven私服 等等 )==省的给自己找麻烦
- 由于权限问题,看不到线上,那么尽量看下日志 elk中 的,elk不直观的话,申请线上日志权限,一定要观察一段时间
线上出问题时候
- 第一时间看日志,看是否有Exception
- 没Exception,那么根据关键字搜索出问题地方的日志 看是否有问题,查询数据库比对数据是否数据或者逻辑是否出了问题,进行code review
- 让运维看服务器情况 观察
cpu 内存 gc 必要时候dump线程文件 文件描述符打开数量
等等指标
高效秘诀
不要盲目
: 要有条理,如排查问题不能盲目,需要带着目标去排查不要急躁
: 做事情不能想不清,脑袋混乱时候,出去抽一根或喝杯咖啡或冥想或去个wc吧不要偷懒
: 你偷的每一个懒,都是在给自己挖坑,最后自己背技术债,同时别人还会鄙视你,说你不靠谱
基本准则
- 记住任何情况下
稳定靠谱 > 速度快
;所以做事情时候, 给自己留下足够的自测时间,前期自测充分,后期少些麻烦!!!
蝎子莱莱
2022-02-12