Go之高质量编程 | 青训营笔记

52 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

什么是高质量编程?编写的代码能够达到正确可靠、简洁清晰的目标可以称之为高质量代码。也就是满足以下条件:各种边界条件是否考虑完备、异常情况处理,稳定性保证、易读易维护。这是张雷老师的看法,简略,但是让我受益匪浅。

同时老师也展开了以下几点来说明:

一、代码格式:

一些常见的IDE都能够自动格式化代码来统一风格。而我用的是GoLand,也方便来统一风格。

二、注释:

注释应该起到以下作用:
    解释代码的作用。
    解释代码实现的过程。
    解释为什么要这样子实现。
    解释什么情况下代码会出错。
    
但是我们也不要为了写注释而写注释,写不到点子上。比如一些方法我们通过方法名就能知道个大概了,而编写代码的人也在这里写了注释,对这个函数的作用进行了解释。但是并没有写的很具体,而是将这个方法名复述了一遍。那么这样的注释起到的作用也就并不是很大,我们也不建议大家写。

三、命名规范:

尽量做到以下几点:
    能简洁就尽量简洁
    缩略词全大写,但是当其位于变量开头且不用导出时,使用全小写。
    变量定义距离使用的地方越远时(比如一些全局变量),应该携带更多的上下文信息。

四、控制流程:

避免嵌套,抽取掉冗余的部分。
保持正常代码路径为最小缩进。

五、错误和异常处理:

一些简单错误优先使用errors.New创建匿名变量来表示。
在fmt.Errorf中使用:%w来将一个错误关联到错误链中。
判断一个错误是否为特定错误时,应该使用errors.Is()。
业务代码中不建议使用panic,如果问题可以被屏蔽或解决,建议使用error来代替panicrecover只能在当前goroutine的被defer的函数中生效。