Uber Go 语言编码规范
首页
打印
首页
下载pdf
目录 搜索
  • 介绍
  • 指导原则
    • 指向 interface 的指针
    • Interface 合理性验证
    • 接收器 (receiver) 与接口
    • 零值 Mutex 是有效的
    • 在边界处拷贝 Slices 和 Maps
    • 接收 Slices 和 Maps
    • 返回 slices 或 maps
    • 使用 defer 释放资源
    • Channel 的 size 要么是 1,要么是无缓冲的
    • 枚举从 1 开始
    • 使用 time 处理时间
    • 错误类型
    • 错误包装
    • 处理类型断言失败
    • 不要 panic
    • 使用 go.uber.org/atomic
    • 避免可变全局变量
    • 避免在公共结构中嵌入类型
    • 避免使用内置名称
    • 避免使用 `init()`
    • 追加时优先指定切片容量
    • 主函数退出方式(Exit)
  • 性能
    • 优先使用 strconv 而不是 fmt
    • 避免字符串到字节的转换
    • 指定容器容量
  • 规范
    • 一致性
    • 相似的声明放在一组
    • import 分组
    • 包名
    • 函数名
    • 导入别名
    • 函数分组与顺序
    • 减少嵌套
    • 不必要的 else
    • 顶层变量声明
    • 对于未导出的顶层常量和变量,使用_作为前缀
    • 结构体中的嵌入
    • 使用字段名初始化结构体
    • 本地变量声明
    • nil 是一个有效的 slice
    • 缩小变量作用域
    • 避免参数语义不明确(Avoid Naked Parameters)
    • 使用原始字符串字面值,避免转义
    • 初始化结构体
    • 初始化 Maps
    • 字符串 string format
    • 命名 Printf 样式的函数
  • 编程模式
    • 表驱动测试
    • 功能选项
  • Linting
    • Lint Runners
暂无相关搜索结果!

本文档使用 topgoer 发布

编程模式

表驱动测试

功能选项

最后编辑: kuteng  文档更新时间: 2021-05-09 22:05   作者:kuteng

项目分享

扫一扫手机阅读

项目分享

扫一扫手机阅读