这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
高质量编程,主要要做到简单性、可读性、生产力三点。
写注释时,要注意包含以下几点信息:
- 代码作用
- 代码实现功能的方法
- 代码实现的外部因素、上下文
- 代码的限制条件
- 公共符号的注释等
命名的目的是降低代码阅读的成本。就像Dave Cheney所说,“好的命名就像一个有趣的笑话。如果你必须加以解释,那就不好笑了”,命名应该做到简洁清晰,一眼就让人看明白。
变量命名时有一些约定俗称的规范,比如说:缩略词全大写;命名的变量距离被使用的地方越远则需要提供更多的上下文信息等。
函数命名一般不携带包名信息,可以在部分情况下省略类型信息。比如下面第一种情况可以省略,第二种情况则最好不要省略。
package time
func Now() Time
func NowTime() Time
package time
func Parse(des string) (Duration, error)
func ParseDuration(des string) (Duration, error)
package包命名一般全小写,尽量做到与标准库、常用变量名兼容,命名中的名词一般使用单数,谨慎在命名中使用缩写。
对于控制流程,最好避免写出if-else嵌套语句,而是写出“逻辑沿着代码向下流动”的代码。除此之外还要注意,代码尽量保持最小缩进,在写代码逻辑时优先处理特殊情况、写容错语句等等。
对于错误和异常处理,用error时尽可能提供简明的上下文信息链,方便定位问题;用panic时因为会杀死进程,只用于真正异常的情况。使用error时,如果需要更多的上下文信息,可以使用recover后在log中记录当前的调用栈。注意recover仅在当前goroutine中被defer的函数中生效。