血的教训:说一说开发规范

背景

今天又被一个BUG坑了一天,揪其本质,是因为项目中开发人员修改了一个功能设计,但没有把表数据同步到其他环境,而问题的表象是表现出主线出了问题,用图表示如下
在这里插入图片描述
业务主线是中间的直线,这个业务主线会调用很多配置项,这些环节配置项的开发人员又不是同一个人,任何一个配置项如果改的过程中出现问题就会导致主线走不通,比如上诉图中的科室排班开发改出问题了,但表现出来的却是整个主线走不通,如果是当时测试进行了测试测出来了问题,倒也好定位,但如果时间一长,就很难定位是哪一个环节出了问题,只能是一步步调试,并且由于整个环节不是我开发的,调试的过程也会遇到诸多苦恼。

关于这个问题的一些思考

  1. 能否说项目里面每个人员负责一条主线的所有模块?这样出现问题,由于是自己做的能较快定位问题
  2. 主线中每一个环节考虑提取出来单独的方法,然后在主线中调用,同时每一个环节打印自己的日志,考虑把报错信息返回给前台或者记录到表里面去
  3. 表设计的时候尽量由高级开发把控,并且不能为空的字段一定要设置不允许空值,虽说在程序里能够进行非空校验然后插入,但随着系统的运行总会出现一些莫名其妙的空值。我不止一次的遇见表里莫名其妙的出现某个字段值为空,如果有非空校验就不会存在这样的问题了。再就是有唯一性的字段一定要加唯一索引,字段和表名一定要加中文注释
  4. 关于打印日志保存信息的一定要使用如下方式
log.error("xxx方法出现异常", e);

可以加上异常的id如

log.error(String.format("xxx方法出现异常,当前id[%s]",id), e);

我不止一次的在代码里面看到这种的,这样打印的日志是不会在日志文件中输出的,他只会在控制台输出。
在这里插入图片描述
或者下面这种的,这样打的日志是不会输出来报错的堆栈信息的

log.error("xxx方法异常");
  1. 代码里面无用的todo要删掉,比如catch里面的
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章