这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记
继续阅读《Go 代码 Review 建议》
Line Length
- go没有严格的代码长度限制,一行的代码长度取决于其对代码可读性的影响,不自然的换行并没有必要。
- 事实上,一行长度太长很可能是各种命名过长的函数堆叠导致,根据函数作用取长度适中的函数名很有必要
Mixed Caps
- 使用驼峰命名法,不要使用下划线!
Named Result Parameters
- 如无必要,勿增实体(除非上下文不够明确,不要给结果参数命名)
Package comments
- 包的注释必须紧贴包声明的地方,无空行,首字母大写
Package names
- 包名中的变量等命名不要重复语义,包的名称也需要有意义
Pass Values
- 不要为了节省空间而在函数中传递指针,除非是大型结构体或将会增长的小结构体的指针
Receiver Names
- 方法接收者的名称应反映其身份,要简短(一两个字母即可),要一致(在不同方法中命名方式相同)
Receiver Type
方法返回类型为指针:
- 方法需要改变接收者
- 接收者是含有sync.Mutex的结构体(避免复制)或是大结构体(提高效率) 3.不知道该用什么时?(其实不能理解为什么可以无脑用指针) 方法返回类型是值: 1.不希望更改接受者 2.小并且不会增长的结构体
Synchronous Functions
- 尽量使用同步操作,在函数返回前处理完回调和channel操作,同步函数更便于测试,也可以避免内存泄漏和数据竞争
Useful Test Failures
- 测试函数如果失败,返回值应该包含有用的信息,如函数调用的参数、实际返回的值与预期返回的值
- 测试习惯:将测试数据存放到表中,表存储在测试函数中,或者使用另一个目的相同的函数生成多组测试数据进行随机测试
Variable Names
- 经常使用的变量名称越短越好,不常用的变量需要通过命名做到见名知意