高质量代码规范 | 青训营笔记

129 阅读2分钟

高质量代码规范 | 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 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语句后进先出!)。

标题:高质量编程简介及编码规范 - 掘金

网址:juejin.cn/course/byte…

引用:

字节内部课-高质量编程简介及编码规范

高质量编程简介及编码规范 - 掘金 (juejin.cn)