血的教訓:說一說開發規範

背景

今天又被一個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裏面的
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章