高质量编程 2
目录
2. 编码规范
3. 性能优化建议
2. 编码规范
控制流程:避免嵌套,保持正常流程清晰。如果两个分支中都包含return语句,则可以去除冗余的else. 尽量保持正常代码路径为最小缩进, 优先处理错误情况/特殊情况,尽早返回或继续循环来减少嵌套。最常见的正常流程的路径被嵌套在两个 if 条件内。成功的退出条件是return nil, 必须仔细匹配大括号来发现。 函数最后一行返回一个错误,需要追湖到匹配的左括号,才 能了解何时会触发错误 。如果后续正常流程需要增加一步操作,调用新的函数,则又会增加一层嵌套。
错误和异常处理:简单的错误,指的是仅出现一次的错误,且在其他地方不需要捕获该错误。优先使用 errors.New 来创建蛋名变量来直接表示简单错误。 如果有格式化的需求,使用 fmt.Errorf. 错误的 Wrap 和 Unwrap,错误的 Wrap 实际上是提供了一个 error 嵌套另 error 的能力,从而生成一个 error 的跟踪链。 在fmt.Errorf 中使用:%w 关键字来将一个错误关联至 错误链中。错误判定,判定一个错误是否为特定错误,使用 errors.ls. 不同于使用 ==,使用该方法可以判定错误链上的所有错误是否含有特定的错误。在错误链上获取特定种类的错误,使用errors.As. panic, 不建议在业务代码中使用 panic,调用函数不包含 recover 会造成程序崩溃,若问题可以被屏蔽或解决,建议使用 error 代替 panic. 当程序启动阶段发生不可逆转的错误时 可以在 init 或main 函数中使用 panic. recover, recover 只能在被 defer 的函数中使用。嵌套无法生效。只在当前 goroutine 生效。defer 的语句是后进先出。如果需要更多的上下文信息,可以recover 后在 log 中记录当前的调用栈。
3. 性能优化建议
Benchmark: 性能表现需要实际数据衡量。Go 语言提供了支持基准性能测试的 benchmark 工具。
Slice: slice 预分配内存, 尽可能在使用 make() 初始化切片时提供容量信息。切片本质是一个数组片段的描述,包括数组指针,片段的长度,片段的容量(不改变内存分配情况下的最大长度)。切片操作并不复制切片指向的元素。创建一个新的切片会复用原来切片的底层数组。大内存未释放,在已有切片基础上创建切片,不会创建新的底层数组。 场景: 原切片较大,代码在原切片基础上新建小切片,原底层数组在内存中有引用,得不到释放。可用copy替代re-slice.
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhackc
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24