高质量编程
编写的代码能够达到正确可靠、简洁清晰的目标,就是高质量的代码
- 各种边界条件是否考虑完备
- 异常情况处理,稳定性保证
- 易读易维护
简介
编程原则:
- 简单性
- 消除多余的复杂性
- 不理解的代码无法修复
- 可读性
- 代码是给人看的
- 编写可维护代码第一步
- 生产力
- 团体整体工作效率很重要
编码规范
如何编写高质量的Go代码
- 代码格式
- gofmt就可高一自动化格式代码
- goimports依赖包管理
- 注释
- 解释代码作用
- 如何做的
- 实现的原因
- 什么时候会出错
小结
代码是最好的注释 注释应该是代码未表达出来的上下文信息
- 命名规范
- 简介更好
- 大小写注意
- 变量距离越远 越需要解释清楚
- 包名中的函数可以不带包名,这样可以不导致歧义
- pakage只用小写字母,简短和包含一定的上下文,不要跟标准一样
- 总结:主要是降低阅读理解代码的成本
- 控制流程
- 避免嵌套
- 保持正常代码路径为最小缩进
- 线性原理
- 正常向下移动
- 提升可维护和可读
- 错误和异常处理
- 简单错误
- 错误的warp可以提供错误链的生成:
%w关键字 - 错误判定:
errors.is recover记录上下文信息:在当前goroutine里面被defer函数生效
公共符号注释
- 每个公共的符号变量、函数、常量、结构
- 任何不明显不简短的函数
性能优化建议
go test -bench=. -benchmem
-
Slice预分配内存: 有一段提前分配的部分 -
map预分配内存 -
strings.Builder是最高效的:另外 里面还有grow方法,可以更轻松的拼接字符串 -
空结构体:在特定的场景下,比如实现set里
-
atomic包:通过硬件实现的