高质量编程与性能调优实战 | 豆包MarsCode AI刷题

107 阅读3分钟

高质量编程

高质量代码————编写的代码能够达到正确可靠、简洁清晰的目标,各种边界条件是否考虑完备、异常情况处理、稳定性保证易读易维护

1. 编程原则

尽管各种语言和语法各不相同,但高质量编程遵循的原则是相通的。

简单性:消除“多余的复杂性”,以简单清晰的逻辑编写代码

可读性:代码是给人看的,不是给机器。可读性有利于后期维护。

生产力:团队整体工作效率非常重要

2. 编码规范

代码格式:使用格式化工具

注释:解释代码实现的原因

(公共符号始终要注释包中声明的常量、变量、函数以及结构都需要添加注释,不明显的也不简短的公共功能需要注释, 库中的任何函数都必须进行注释)

image.png

命名规范:简洁胜于冗长,见名知意

image.png

image.png

控制流程:避免嵌套,保持正常流程清晰。坚持线性原理,处理逻辑尽量走直线。(比如两个分支都含有return语句,则可以去除冗余的else)

image.png

错误和异常处理:尽可能提供简明的上下文信息链,方便定位问题。

性能优化

前提是满足正确可靠、简洁清晰等质量因素。

性能优化是综合评估,有时候时间效率和空间效率可能对立。避免常见的性能陷阱可以保证大部分程序的性能,普通应用代码不要一昧地追求程序的性能,越高级的性能优化手段越容易出现问题,在满足正确可靠、简洁清晰的质量要求的前提下提高程序性能。

map预分配内存

  • 不断向map添加元素的操作会触发map的扩容
  • 提前分配好空间可以减少内存拷贝和Rehash的消耗
  • 建议根据实际需求提前预估好需要的空间

字符串处理(使用StringBuilder):

  • 使用+拼接性能最差,每次都会重新分配内存
  • 字符串是不可变类型,占用内存大小是固定的
  • 内存扩容策略,不需要每次拼接重新分配内存

使用空结构体节省内存

  • 空结构体struct{}实例不占据任何的内存空间
  • 可作为各种场景下的占位符使用,节省资源

性能优化原则

  • 要依靠数据不是猜测
  • 不要过早优化
  • 不要过度优化
  • 要定位最大瓶颈而不是细枝末节

优化工具

image.png

业务服务性能优化

对逻辑相对复杂的程序进行性能调优

  • 服务:能单独部署,承载一定功能的程序
  • 依赖:Service A的功能实现依赖Service B的响应结果,称为Service A依赖Service B
  • 调用链路:能支持一个接口请求的相关服务集合及其相互之间的依赖关系
  • 基础库:公共的工具包、中间件

image.png 流程

  • 建立服务性能评估手段
  • 分析性能数据,定位性能瓶颈
  • 重点优化项改造
  • 优化效果验证