编程原则
- 简单性
- 可读性
- 生产力
注释
1、公共符号始终要注释
包中声明的每个公共的符号:
2、变量、常量、函数以及结构都需要添加注释
3、任何既不明显也不简短的公
共功能必须予以注释
4、无论长度或复杂程度如何对库中的任何画数
都必须进行注释
代码规范
1、注释
应该解释代码的作用
应该解释代码是如何做的
代码实现的原因
代码什么情况会出错
细节:命名规范:要有更多的信息,比如 deadline 优于 time
函数编码规范
函数名不携带包名的上下文信息,因为包名和函数名都是成双成对的
函数尽量简短
如何命名 Serve(xxx,xxx) 或者 ServeHTTP(xxx,xxx)
包管理规范
不适用常量变量名作为包名
使用单数而不是复数
谨慎的使用缩写
小结:好的命名就像一个笑话,如果你必须解释它,它就不好笑了。
错误判定:使用errors.ls 可以判定错误连上的错误是否包含有特定的错误
pannic:业务代码中不推荐。但是当程序启动阶段发生不可逆转的错误的时候,可以在init或main函数中使用panic
要结合实际,灵活变通。
func main(){
if true(){
defer fmt.Printf("1")
} else{
defer fmt.Printf("2")
}
defer fmt.Printf("3")
}
defer语句会在函数返回前调用,多个defer语句是后进先出
最终输出结果:31
性能调优原则:
要依靠数据不是猜测
要定位最大瓶颈而不是细枝末节
不要过早优化
不要过度优化
性能分析工具:pprof-排查
topN
list
根据指定的正则表达式查找代码行
web
调用关系可视化
Heap-堆内存
适合图的展示来方便我们分析问题
mutex-锁
求一个关于“锁”的搞笑表情包,让我happy一下。
block-阻塞