高质量代码规范 | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
前言
虽然有一直在听课,但是笔记一直没怎么记,那么慢慢从断掉的地方开始温故吧。
编程原则
简单性(简单清晰的逻辑)、可读性(便于二次开发、维护)、生产力(团队整体效率)
代码格式:
gofmt自动格式化为官方风格,goimports对依赖包管理
注释:
公共功能、函数、符号等,代码的作用(函数名清楚的时候不必要写,简单的逻辑不必要写、不要注释实现接口的方法)、如何做的、实现的原因(外部的因素、额外上下文)、什么情况会出错(限制条件、注意点)(代码清楚是最好的注释)
命名规范:
简洁;缩写省略词全大写,ServeHTTP,而不是ServeHttp;
缩略词位于开头且不需要导出时全小写,使用XMLHTTPRequest或者xmlHTTPRequest;
变量距离被使用的地方越远,则需要给出更多的上下文信息;
变量作用域仅限for内部时越短越好,i,j……;
看实际需求,应该赋予变量一定的信息量;
函数名简短,不携带包名的上下文信息(当名为foo的包某函数返回类型Foo,可省略类型信息),http包中的服务函数可以直接Serve(调用时是http.Serve);
package包只用小写字母,不与标准库同名,使用单数而不是复数,谨慎使用缩写。
控制流程:
避免嵌套,保持流程清晰;去掉冗余的else;优先处理错误/特殊情况,尽早返回或继续循环来减少嵌套(if套if改成两个if串联,各自返回错误);原则是尽量走直线,沿着屏幕向下是一个流程图,减少嵌套分支。
错误和异常处理:
优先使用errors.New来创建匿名变量来直接表示简单错误;有格式化需求使用fmt.Errorf;错误的Wrap生成一个error跟踪链;使用error.Is,error.As;panic处理无法屏蔽和解决的错误(真正异常的情况);recover只在当前go routine的被defer的函数中生效(defer语句后进先出!)。
标题:高质量编程简介及编码规范 - 掘金
引用:
字节内部课-高质量编程简介及编码规范