作者:非妃是公主
专栏:《Golang》
博客主页:https://blog.csdn.net/myf_666
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
文章目录
- 一、高质量编程
- 定义
- 二、代码规范
- 1. 代码格式
- 2. 注释
- 3. 命名规范
- Ⅰ. variable
- Ⅱ. function
- Ⅲ. package
- Ⅳ. 命名规范——核心
- 4. 控制流程
- Ⅰ. 避免嵌套,保持正常流程清晰
- Ⅱ. 尽量保持正常代码路径为最小缩进
- Ⅲ. 控制流程-核心
- 4. 错误和异常处理
- Ⅰ. 简单错误
- Ⅱ. 错误的Wrap和Unwrap
- Ⅲ. 错误判定
- Ⅳ. panic
- Ⅴ. recover
- Ⅵ. 错误处理——小结
- the end……
一、高质量编程
定义
高质量编程,就是指编写的代码能够达到正确可靠的同时,具备简洁清晰、结构明了等特点,可以让团队成员很快的上手。具体来说,有以下几点:
- 简单性
- 消除多余的复杂性,以简单清晰的逻辑编写代码。
- 团队其它成员不理解的代码,无法修复改进。
- 可读性
- 代码是写给人看的,而不是机器。
- 编写可维护代码的第一步,就是确保代码可读。
- 生产力:
- 在团队开发过程中,整体的工作效率非常重要。
以上就是我们的目标,总结一下,我们想获得简单、可读,同时可以提高团队生产力的代码,那么,通过以下代码规范可以达到。
二、代码规范
1. 代码格式
代码格式,就是代码的缩进、分行、空格等等。其实,官方给我们提供了相关的标准,当我们使用goland进行编程的时候,即写完一段代码后,就可以通过ctrl+alt+l
快捷键,进行一键调整代码格式。
如下图:
2. 注释
注释,是代码中很重要的一个规范,大多数时候我们都在关注代码实现,但是注释的重要性容易被忽视。
但是,我其实是重视代码注释的,因为一直以来也想着提高自己的代码质量。给大家看一下我写的代码:
我的注释是不是看起来还算是整洁?(大佬轻喷,毕竟我以前一直这样的注释写得还算是很棒的)但是,学习了Go语言的代码规范后,我发现Go语言的注释有着很大的讲究。下面我们一起来看一看。
- 解释代码作用
- 解释代码是如何做的
- 解释代码实现的原因
- 解释代码出错的情况
其实,注释主要是为代码增加一些额外的信息,包括上下文信息等。我们可以通过阅读代码很明显就可以得到的信息,就不需要加进注释,如果加进去,就叫做冗余。
举几个例子:
好的注释:
因为对于这个公共符号,我们可以很容易地看出一些额外信息,比如这个函数到底要打开什么……
不好的注释:
不好的原因很简单,因为这个注释我们从命名中就可以得到(这个表是否已经满了),并不是额外信息。
好的注释:
解释了代码是如何实现的。
不好的注释:
只利用了一个process表示代码的实现,没有额外信息,很不好!
现在再去看我最初写的代码就很容易明白了,注释的内容都是可以很容易从代码中得到的“废话”。而真正有用的额外信息,却很少很少……
一些优秀的注释,如下:
3. 命名规范
Ⅰ. variable
- 简洁胜于冗长
- 缩略词全大写,当位于变量开头且不需要导出时(导出指:公有变量,我们见到的大多数变量都是私有变量,通过接口进行操作,很少有公有变量直接操作的,这样不安全),使用全小写。
- 例如ServeHTTP,而不是ServeHttp
- 使用XMLHTTPRequest或者xmlHTTPRequest(取决于该变量是否是公有变量)。
- 变量距离其被使用的地方越远,则需要携带越多的上下文信息。
- 全局变量在其名字中需要更多的上下文信息,使得其在不同地方可以轻易辨认出其含义。
几个命名规范与否的小示例,如下:
Ⅱ. function
- 函数名不携带报名的上下文信息,因为报名和函数名总是成对出现。
- 函数名应尽量简短。
- 当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义。
- 当名为foo的包某个函数返回类型T时(T并不是Foo),可以在函数名中加入类型信息。
Ⅲ. package
- 只由小写字母组成。不包含大写字母和下划线等字符。
- 简短并包含一定的上下文信息。例如
scheme
、task
等。 - 不要与标准库同名。例如不要使用
sync
或者strings
。
应尽量满足的规则:
- 不使用变量名作为报名。例如使用bufio而不是buf。
- 使用单数而不是负数。例如使用encoding而不是encodings。
- 谨慎地使用缩写。例如使用fmt在不破坏上下文的情况下比format更加简短。
Ⅳ. 命名规范——核心
- 降低阅读理解代码的成本。
- 重点考虑上下文信息,设计简洁清晰的名称。
4. 控制流程
Ⅰ. 避免嵌套,保持正常流程清晰
Ⅱ. 尽量保持正常代码路径为最小缩进
Ⅲ. 控制流程-核心
- 线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支。
- 正常流程代码沿着屏幕向下移动。
- 提升代码可维护性和可读性。
- 故障问题大多出现在复杂的条件语句和循环语句中。
4. 错误和异常处理
错误处理这部分内容由于在项目中遇到的较少,理解并不是很深入,暂且记录在这里吧~
Ⅰ. 简单错误
Ⅱ. 错误的Wrap和Unwrap
Ⅲ. 错误判定
Ⅳ. panic
Ⅴ. recover
Ⅵ. 错误处理——小结
the end……
Go语言——【高质量编程 | 代码规范】部分的内容到这里就要结束啦~~
到此既是缘分,欢迎您的点赞、评论、收藏!关注我,不迷路,我们下期再见!!
😘😘😘 我是Cherries,一位计算机科班在校大学生,写博客用来记录自己平时的所思所想!
💞💞💞 内容繁杂,又才疏学浅,难免存在错误,欢迎各位大佬的批评指正!
👋👋👋 我们相互交流,共同进步!
注:本文由
非妃是公主
发布于https://blog.csdn.net/myf_666,转载请务必标明原文链接:https://blog.csdn.net/myf_666/article/details/129009764