高质量编程与性能调优实践01 | 青训营

47 阅读1分钟

高质量编程简介及编码规范

01 高质量编程

1.1 简介

image-20230602203316975

image-20230602203337161

1.2 编码规范

image-20230602203301620

1.2.1 编码规范—代码格式

image-20230602201219765

1.2.2 编码规范—注释

Google的注释 规范

image-20230602203245445

image-20230602201743768

image-20230602201937799

image-20230602202034133

image-20230602202121418

公共符号始终要注释

image-20230602200841068

image-20230602201143166

image-20230602202321205

image-20230602203351878

1.2.3 命名规范

image-20230602203212421

image-20230602202611742

image-20230602202632224

函数命名

image-20230602203548496

包命名

image-20230602203704874

image-20230602203712140

image-20230602203751665

1.2.4 控制流程

image-20230602203818036

image-20230602203835664

下左 是上面代码的 规范格式;下右是 Go仓库中一段标准的处理流程

image-20230602204109957

image-20230602204322660

1.2.5 错误和异常处理

image-20230602204441980

复杂错误

image-20230602204517035

错误判定

image-20230602204605199

image-20230602204646503

panic

image-20230602204823565

image-20230602204933475

image-20230602205059708

image-20230602205128698

规范 例题

image-20230602205319666

image-20230602205437587

性能优化指南

1.3 性能优化建议

image-20230602205602627

1.3 性能优化建议—Benchmark

image-20230602205730508

b.N代表 实际测试了多少次;

image-20230602205820739

1.3.2 性能优化—Slice

预分配:初始化容量 ;能减少 底层 内存分配次数,减少执行时间;

image-20230602210038416

Slience底层:

image-20230602210602751

容量不足时,底层数组会先扩容然后 再把b放进去;

新切片仍然复用 原来切片 导致的陷阱:

image-20230602211250297

1.3.3 性能优化—Map

image-20230602211344298

image-20230602211417203

1.3.4 性能优化—字符串处理

image-20230602211502881

性能差异:

image-20230602211519310

image-20230602211547121

image-20230602211727703

image-20230602211825894

1.3.5 空间性能优化—空结构体

image-20230602211936424

image-20230602212115862

1.3.6 性能优化—atomic

atomic包 维护原子变量进行操作 性能优于 MutexAddOne()加锁操作;

image-20230602213011212

image-20230602213527798

1.3 建议小结

image-20230602213542881