这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
理解
高质量编程
不足
性能调优(我人给听麻了)
高质量编程
什么是高质量?
编写的代码能够达到正确可靠、简洁清晰的目标为高质量
- 各种边界条件是否考虑完备
- 异常情况处理,稳定性保证
- 易读易维护
编程原则
- 简单性:消除”多余的复杂性”,以简单清晰的逻辑编写代码。在实际工程项目中,复杂的程序逻辑会让人害怕重构和优化,因为无法明确预知调整造成的影响范围。难以理解的逻辑,排查问题时也难以定位,不知道如何修复。
- 可读性:可读性很重要,因为代码是写给人看的,而不是机器。在项目不断迭代的过程中,大部分工作是对已有功能的完善或扩展,很少会完全下线某个功能,对应的功能代码实际会生存很长时间。已上线的代码在其生命周期内会被不同的人阅读几十上百次。听课时老师经常说的在课堂上不遵守纪律影响全班同学的时间,难以理解的代码会占用后续每一个程序员的时间。
- 生产力:编程在当前更多是团队合作,因此团队整体的工作效率是非常重要的一方面。为了降低新成员上手项目代码的成本,Go 语言甚至通过工具强制统一所有代码格式。编码是整个项目开发链路中的一个节点,遵循规范,避免常见缺陷的代码,能够降低后续联调、测试、验证、上线等各个节点的出现问题的概率,就算出现问题也能快速排查定位。
编码规范
- 代码格式
有两种工具提供
- gofmt
Go 语言官方提供的工具,能保证所有的 Go 代码与官方推荐格式保持一致,常见IDE都可以很方便地进行配置,像 Goland 内置了相关功能,直接开启即可在保存文件的时候自动格式化。
- goimports
会对依赖包进行管理,自动增删依赖的包引用,按字母序排序分类,具体可以根据团队实际情况配置使用。
- 注释
- 注释应该解释代码作用
- 注释应该解释代码如何做的
- 注释应该解释代码实现的原因
- 注释应该解释代码什么情况会出错
- 命名规范
-
简洁胜于冗长
-
缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写。
- 例如使用 ServeHTTP 而不是 ServeHttp;
- 使用 XMLHTTPRequest 或者 xmlHTTPRequest
-
变量距离其被使用的地方越远,则需要携带越多的上下文信息。
- 全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义。
- 控制流程
- 避免嵌套,保持正常流程清晰
- 尽量保持正常代码路径为最小缩进
- 错误和异常处理
- 简单错误
- 错误的 Wrap 和 Unwrap
- 错误判定
- panic
- recover
总结
在工作中,编程是团队合作的工程,简洁清晰的代码让其他人更容易在你的基础上开发,同时出问题的概率更低,大家更乐于与你合作,也让团队更高效。在面试的时候,也有编码环节,利用代码清晰地表达出思路,还能让面试官额外加分。