编程编码规范和性能优化| 青训营

57 阅读2分钟

高质量编程编码规范

三个原则:简单性、可读性、生产力 实践经验 1、公共函数要注释。包中声明的变量等等什么的都要注释 但是不需要注释实现接口的方法 注释的具体范围: 代码格式。 注释内容:解释代码作用、解释代码如何做到额、解释代码实现原因、解释代码什么情况下会出错。 2、命名规范。 (1)简洁。 缩略词全大写、位于变量开头不需要导出的时候,使用全小写。 变量距离使用的地方越远,需要携带越多上下文信息。 http包中创建服务的函数如何命名好? func Serve or func ServeHTTP (2)package包名 只有小写字母组成。包含一定上下文信息。不与标准库同名。不用常用变量名作为包名。用单数。谨慎使用缩写。 3、控制流程 。保持正常代码路径为最小缩进。 处理逻辑尽量走直线,避免复杂嵌套分支。 4、错误和异常的处理 error:方便调用。 panic:不建议在业务中使用。调用函数不包含recover会造成程序崩溃。如果问题可以被屏蔽或者解决,使用error。程序启动阶段发生不可逆转的错误的时候,在init和main函数中使panic。它一出现就表示我们的程序没办法正常使用。 recover:只能被defer的函数中被使用。只在当前goroutine生效。defer的语句是后进先出。嵌套无法生效。如果需要更多上下文信息,可以在recover后在log中记录当前调用线。 5、defer语句是后进先出!!

性能优化

(一)、性能调优原则 要依靠数据而不是猜测(重要‼️)、定位最大瓶颈而不是细枝末节、不要过早优化、不要过度优化 (二)、性能分析工具pprof http://localhost:6060/debug/pprof/goroutine “goroutine”可以换成其他的 1、性能调优的用途 1)业务服务优化 流程:建立服务型能评估手段、分析性能数据、定位性能瓶颈、重点优化项改造(如对cpu占用最高的程序的优化)、优化效果验证(完成压测之后,压测报告有了之后再上线) (1)建立服务型能评估手段 评估方式、请求流量构造、压测范围、性能数据采集 2)基础库优化 适用范围更广 优化流程:分析基础库的核心逻辑和性能瓶颈、内部压测验证、推广业务服务落地验证 (3)go语言优化 适用范围最广 编译器&运行时优化,优点:接入简单,只需要调整编译配置、通用性强