代码规范总结-- 更新中
重点:编写代码一定要想清楚逻辑,一定要想清楚逻辑, 一定要想清楚逻辑 , 分支, 复用 !!!!!!
说的话,做的事。 要经过深思熟虑。 不要讲废话。 信任度是一点一点积累起来的 !!!!!
1. 定义接口时要见名知意
2. 当自己为别人提供接口的时候,需要进行两步记录, 首先,记录别人调我们的接口。其次记录我们调用三方的接口。
3. 尽量将方法抽象
4. 使用结构体方法,这样将参数赋值给结构体的时候,在调用其方法,直接点用属性即可。
5. 要做到结构分明, prepare(准备) 做函数 finish(最后处理)
6. 在写函数的时候,要将每一个功能写到相同的函数,即:不用将业务处理逻辑写到调用三方接口中
7. httpCode 为200 这种关键字的时候,要尽量使用方法取替代不要直接写 200 。http.statOk.
8. 代码不要出现固定数字类型,要通过配置文件进行读取
9. go 中要熟练使用 defer goto 这种工具
10. 可以用2进制的每一个位去代替不同的类型,用到位运算,位与 相同为1 位或 又一个为1就为1
11. 不要一直调用现成的函数,要了解他的原理。
12. 开发代码的时候,要基于master 分支进行拉取开发分支,开发完毕之后,test分支merge 开发分支
测试没有问题,在切换到master分支,merge 开发分支代码,可以上线。(test,多人开发测试分支,
只有测试通过才能上线,所以需要建立自己本地的开发分支,基于master 拉取。测试没有问题,在合并至master分支。)
13. 配置文件中 conf.yaml 为临时配置文件,用于加载本地环境,正常跑项目的,上线的配置文件为具体的文件夹,
例如mx文件下的 conf-dev.conf 上线的文件夹。在上线的时候只需要将自己本地的临时文件中修改的放到上线配置文件即可。
14. 项目上线,增加任何 环境上的东西,要先处理 生产环境,比如先将代码中新增加的数据进行创建等。然后再上传代码。要不然可能会造成
服务挂掉。
15. 分析错误问题:先找到问题是什么, 然后在找到 哪里可以影响到当前 问题。比如,配置文件没有加载,第一,加载配置文件的代码出错。
第二个,代码在加载配置文件的时候没有配置文件。 第三个,如果前两个都可以,那就要考虑环境因素。即:当前环境是否有代码,是否有配置文件。
即:代码错发环境。
16. 在类似与 读取配置文件开关的 代码中,要增加log,打印开关状态。
17. redis 还有一个的库的 概念 一个实例下有16库 库号为 0 - 15
18. 如果确定代码没有问题, 就要找外部环境问题, 比如参数,环境。
19. 在写代码的时候,要有自己的 风格、格式。不要一味的模仿。
20. 在写 代码的时候 尽量不要写复杂的 计算, 要让别人能看的懂。
21. 在查询sql 要记得 去重 否则 查询到的数据 会放到内存中, 而且每次查询的时间也会增大。
22. 在 对 不同事件 进行处理的 时候 要 通用 使用 switch ... case{} 而不是 if ...else...
23. 在 测试需要 开发 在代码中增加 一些代码用于 检测的 时候 之后 在删除 不应该 说 测试 测完了 在上线之前删除,应该 增加 开关 。
24. 定义变量之前,要检查此变量是否被定义过。防止重复定义。
25. 在打印日志的 时候, 正常的信息 不是 error的 不要用 error 级别 用 info 因为 一般报警统计 都会统计 error 级别。
26. 写代码的 时候 遇到 索引取值的时候,要保证 不会出现 超出索引范围的 代码 要做校验 防止 程序panic。 eg: testList = [](空切片) testList[1] 空切片取值,报错。
27. 在线上升级的时候,要考虑平滑升级。 即要兼容老版本 也要兼容新版本。
28. 最近接触了 go的 list(双向链表) heap(堆) ring(环)。 在不同的 功能下 要考虑用到不同的数据结构。这样才能达到最大的效率。
29. 在并发 sql insert 的时候 最好指定 id=0 会自动递增 防止出现 重复id 现象
30. 在并发 defer close(channel) 的时候 要确定 关闭channel 和 channel <- 1 的顺序 防止出现 send on channel panic
31. 在sql 语句中存在 and or 的时候 要记得增加 括号
32. pod 在缓存达到最大时, 没有设置 自动扩容 会重新启动