这节课主要介绍代码规范化,性能评估的原则与流程。
高质量编程
高质量编程简介
编写的代码正确可靠、简洁清晰。边界条件考虑完备,异常情况处理,稳定性保证。易读易维护。
简单性:消除多余复杂程序逻辑,方便修复改进
可读性:确保代码可读
生产力:生产效率
——go语言开发者Dave Cheney
编码规范
代码格式: gofmt自动格式化代码 以及goimports 注释: 注释代码作用/代码如何做的/实现原因/代码什么情况出错/公共符号始终要注释
命名规范: variable 缩略词使用ServeHTTP,缩略词全大写 xmlHTTPRequest 变量距离携带上下文信息
function: 函数名不携带包名信息 函数名尽量简短 foo的包某函数返回类型Foo,可省略类型信息 foo的包某个函数返回类型T,可加类型信息
http包中创建服务的函数命名使用前者更好
package: 全小写字母 不与标准库同名,如sync,strings 尽量满足: 使用单数非负数 buf-》bufio encodings->encoding format-》fmt
控制流程:
避免if else嵌套
保持正常代码路径为最小缩进
错误和异常处理: 简单错误 errors.new(“”) 格式化需求使用fmt.Errorf
错误的wrap和unwrap
panic: 不建议业务代码使用panic 不包含recover会造成程序崩溃
defer会在返回前先输出
性能优化建议
性能调优实战
性能调优简介
字符串处理
atomic包仅仅保护一个变量 sync.Mutex保护逻辑而不仅仅保护变量