这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
编程原则
不同编程语言、不同应用场景写出来的代码千差万别, 然而高质量的编程却有一些共同的原则。
简单性
- 以简单清晰的逻辑编写代码
- 复杂代码难以进行修复改进
可读性
- 代码不光是写给机器看的,更是写给人看的
- 编写可维护的代码的第一步是确保代码可读
生产力
- 保持团队整体的工作效率非常重要
编码规范
代码格式
代码格式的重要性体现在两点
- 可读性
- 统一性
gofmt
Go 语言官方提供的工具,Go 语言基本的工具链下载安装完成后, 可使用
go fmt 直接运行。 它弄够自动将 Go 的代码统一为官方的风格。 常见的 IDE
都支持其配置。
goimports
也是 Go 语言官方提供的工具, 相当于 gofmt 的补充, 可以自动增删依赖包的引用, 并以字典序将他们有规律地排序
gofumpt
gofumpt 也是非常常用的用于自动格式化代码的工具, 但是它是社区制作的。
gofumpt 在保持了向后兼容的同时, 做了比 gofmt 更严格的检查。 这意味着 gofumpt 允许的格式是 gofmt 的子集
命名规范
变量
- 简介胜于冗长
- 缩略词全大写,而当其不需被导出的时候使用全小写
- 使用
ServeHTTP而不是ServeHttp - 使用
XMLHTTPRequest或者 ~xmlHTTPRequest
- 使用
- 变量距离其使用的地方越短,其名字携带的上下文信息应该越多
- for 循环头部定义用于迭代的临时变量名字可以很短
- 全局变量需要用在很多地方,所以其名字应该提供更多上下文信息而更长
函数
- 函数名不携带包名的上下文信息,因为包名和上下文总是成对出现
- 函数名应尽量简短
foo包返回Foo类型时,可以简略类型的信息foo包返回T类型时,可以在函数名中加入类型信息
包
- 只使用小写字幕,不包含大写字幕与下划线
- 简短的同时包含上下文信息
- 不要与标准库重名
注释
注释应该起到的作用
- 解释代码作用
- 解释代码如何作用
- 解释代码实现的原因
- 解释代码什么情况下会出错
Good code has lots of comments, bad code requires a lot of comments. -- Dave Thomas and Andrew Hunt
不过,代码本身就是最好的注释, 注释应该提供的是代码未能表达出的上下文信息。