如何提高代码质量?( 七 )

对于测量的途径主要是指标 - metrics 和日志 - logs。metrics 像是心电图或者 CT,让身体的状况一览无余。所以 metrics 用来了解现状,指明方向;logs 则是细密的日记,什么都有,唯独没重点,所以常常在现状和问题的方向确定后,用来归因。比如说 CT 报告说,这周和上周相比,肝不那么好了,需要小心肝。那么肝为什么不好?把一周的日志调出来一看,哎呀,夜夜酒吧里纵情于世界杯,难怪。于是得出改进方案:世界杯结束后,别又喝酒又熬夜又赌球这病就好了,没事。

metrics 和 logs 大部分时候是给自己和别的程序员看的,所以从上文的角度看,它也是个产品,符合产品和接口定义的一切准则。

先说 metrics。

定义 metrics 的时候,你要先搞明白你要改进些什么,这是所谓的 begin with the end in mind。代码的运行效率?那么,究竟那里效率不高?怎么定义效率,怎么计算效率(latency? throughput? 还是什么)。代码的容错性?那么,什么样的 error 要收集,如何分门别类?哪里是潜在的错误大本营?

知道要改进什么后,接下来脑袋里要有幅图 —— 不是富春山居图 —— 是自己或者别人使用这些 metrics 的场景预现图,就像至尊宝给山贼展示他和白晶晶的旷古奇恋的画面一样。