参考文献
- https://github.com/zeromicro/go-zero
- (主要参考,基本全搬)
- https://dave.cheney.net/practical-go/presentations/gophercon-singapore-2019.html#_simplicity
- https://github.com/go-gorm/gorm
- https://gorm.io/zh_CN/
- https://github.com/gin-gonic/gin
- https://gin-gonic.com/zh-cn/docs/
- https://github.com/beego/beego
- https://beego.vip/
前序
在我们使用golang开发时,见谅抦佢在其他语言中的一些规范习惯来套用golang开发,虽然不同语言之间的某些规范可能是想通的,但是我们最好能够按照官方的一些demo来熟悉渐渐适应当前语言的编程规范,而不是直接将原来语言的编程规范也随之迁移过来。
命名准则
- 当变量名称在定义和最后一次使用之间的距离很短时,简短的名称看起来会更好。
- 变量命名应尽量描述其内容,而不是类型
- 常量命名应尽量描述其值,而不是如何使用这个值
- 在遇到for,if等循环或分支时,推荐单个字母命名来标识参数和返回值
- method、interface、type、package推荐使用单词命名
- package名称也是命名的一部分,请尽量将其利用起来
- 使用一致的命名风格
文件命名规范
- 全小写单词命名
- 多单词间用下划线
_
来间隔例如:order_by.go
- 名称不宜过长
变量命名规范参考
- 首字母小写
- 驼峰命名
- 见名知义,避免拼音替代英文
- 不建议包含下划线(_)
- 不建议包含数字
适用范围
- 局部变量
- 函数出参、入参
函数、常量命名规范
- 驼峰式命名
- 可exported的必须首字母大写
- 不可exported的必须首字母小写
- 避免全部大写与下划线(_)组合
import 包引入
- 单行import不建议用圆括号包裹。
- 按照官方包,NEW LINE,当前工程包,NEW LINE,第三方依赖包顺序引入。
函数返回
- 对象避免非指针。(减少大块内存开销?)
- 遵循有正常值返回则一定无error,有error则一定无正常返回的原则。
错误处理
- 有err必须处理,如果不能处理必须抛出。
- 避免下划线
_
接收err
函数体编码
- 建议一个block结束空一行,如if、for等…
- return前空一行