这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
高质量编程
虽然语言千变万化,但是高质量代码是相似的。
简单性
你写的不简单,别人就没法看懂,没法维护。要消除多余的复杂性。
可读性
代码是给人看的,不是给机器看的。 容易维护的第一步就是保证可读性。
生产力
要让其他人快速上手。
编码规范
编码规范对团队合作是很重要的。
代码格式:go fmt。这方面go比较方便。
注释:好的代码有很多注释。坏的代码需要很多注释。
对于第一点,主要是函数开头写的那种注释。
第二点主要是解释一些子函数。
第三点是解释一下上下文关系,为什么要这么写。
第四点是给一些异常例子。
一言以蔽之,注释要给出代码没表达出来的信息。好的注释就是代码本身。
命名:一个变量作用的范围越远,名字就要越长,携带越多的上下文信息。当然lecture里介绍了很多命名规范。不过有些我觉得不是很适应,见仁见智。
好的命名就像好的笑话,如果必须解释他,就不好笑了。
缩进:有异常的话尽早返回。
异常:在go里尽量不要使用panic。有error的话,能解决的简单error尽早解决。
性能调优思考方向(针对go)
注意,必须先看会不会影响业务、有没有必要之类的。
benchmark工具
go的test有自带的性能分析工具。
内存回收
注意让大对象及时的被回收。比如一个底层数组如果对应多个切片的话,可能会导致数组没有被及时回收。
字符串拼接
strings.builder方法。注意可以用grow预分配空间。
空结构体
空结构体不占用任何内存空间。可以节省资源,也可以表示占位符。
性能优化
性能分析工具 proof
具体的工具使用就不在这里展开了。
比较惊喜的是介绍了pprof之类的工具的实现方法。具体就是每个一段时间进行一次采样。采样的方法是向操作系统发送SIGPROF信号。