高质量编程学习笔记(2)| 青训营笔记

104 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

继续阅读《Go 代码 Review 建议》


Line Length

  • go没有严格的代码长度限制,一行的代码长度取决于其对代码可读性的影响,不自然的换行并没有必要。
  • 事实上,一行长度太长很可能是各种命名过长的函数堆叠导致,根据函数作用取长度适中的函数名很有必要

Mixed Caps

  • 使用驼峰命名法,不要使用下划线!

Named Result Parameters

  • 如无必要,勿增实体(除非上下文不够明确,不要给结果参数命名)

Package comments

  • 包的注释必须紧贴包声明的地方,无空行,首字母大写

Package names

  • 包名中的变量等命名不要重复语义,包的名称也需要有意义

Pass Values

  • 不要为了节省空间而在函数中传递指针,除非是大型结构体或将会增长的小结构体的指针

Receiver Names

  • 方法接收者的名称应反映其身份,要简短(一两个字母即可),要一致(在不同方法中命名方式相同)

Receiver Type

方法返回类型为指针:

  1. 方法需要改变接收者
  2. 接收者是含有sync.Mutex的结构体(避免复制)或是大结构体(提高效率) 3.不知道该用什么时?(其实不能理解为什么可以无脑用指针) 方法返回类型是值: 1.不希望更改接受者 2.小并且不会增长的结构体

Synchronous Functions

  • 尽量使用同步操作,在函数返回前处理完回调和channel操作,同步函数更便于测试,也可以避免内存泄漏和数据竞争

Useful Test Failures

  • 测试函数如果失败,返回值应该包含有用的信息,如函数调用的参数、实际返回的值与预期返回的值
  • 测试习惯:将测试数据存放到表中,表存储在测试函数中,或者使用另一个目的相同的函数生成多组测试数据进行随机测试

Variable Names

  • 经常使用的变量名称越短越好,不常用的变量需要通过命名做到见名知意