Go语言——【高质量编程 | 代码规范】

在这里插入图片描述

作者:非妃是公主
专栏:《Golang》
博客主页https://blog.csdn.net/myf_666
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
在这里插入图片描述

一、高质量编程

定义

高质量编程,就是指编写的代码能够达到正确可靠的同时,具备简洁清晰、结构明了等特点,可以让团队成员很快的上手。具体来说,有以下几点:

  • 简单性
    • 消除多余的复杂性,以简单清晰的逻辑编写代码。
    • 团队其它成员不理解的代码,无法修复改进。
  • 可读性
    • 代码是写给人看的,而不是机器。
    • 编写可维护代码的第一步,就是确保代码可读。
  • 生产力:
    • 在团队开发过程中,整体的工作效率非常重要。

以上就是我们的目标,总结一下,我们想获得简单、可读,同时可以提高团队生产力的代码,那么,通过以下代码规范可以达到。

二、代码规范

1. 代码格式

代码格式,就是代码的缩进、分行、空格等等。其实,官方给我们提供了相关的标准,当我们使用goland进行编程的时候,即写完一段代码后,就可以通过ctrl+alt+l快捷键,进行一键调整代码格式。

如下图:

在这里插入图片描述

2. 注释

注释,是代码中很重要的一个规范,大多数时候我们都在关注代码实现,但是注释的重要性容易被忽视。

但是,我其实是重视代码注释的,因为一直以来也想着提高自己的代码质量。给大家看一下我写的代码:

在这里插入图片描述

我的注释是不是看起来还算是整洁?(大佬轻喷,毕竟我以前一直这样的注释写得还算是很棒的)但是,学习了Go语言的代码规范后,我发现Go语言的注释有着很大的讲究。下面我们一起来看一看。

  • 解释代码作用
  • 解释代码是如何做的
  • 解释代码实现的原因
  • 解释代码出错的情况

其实,注释主要是为代码增加一些额外的信息,包括上下文信息等。我们可以通过阅读代码很明显就可以得到的信息,就不需要加进注释,如果加进去,就叫做冗余

举几个例子:

好的注释:

在这里插入图片描述

因为对于这个公共符号,我们可以很容易地看出一些额外信息,比如这个函数到底要打开什么……

不好的注释:

在这里插入图片描述

不好的原因很简单,因为这个注释我们从命名中就可以得到(这个表是否已经满了),并不是额外信息。

好的注释:

在这里插入图片描述

解释了代码是如何实现的。

不好的注释:

在这里插入图片描述

只利用了一个process表示代码的实现,没有额外信息,很不好!

现在再去看我最初写的代码就很容易明白了,注释的内容都是可以很容易从代码中得到的“废话”。而真正有用的额外信息,却很少很少……

一些优秀的注释,如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 命名规范

Ⅰ. variable

  • 简洁胜于冗长
  • 缩略词全大写,当位于变量开头且不需要导出时(导出指:公有变量,我们见到的大多数变量都是私有变量,通过接口进行操作,很少有公有变量直接操作的,这样不安全),使用全小写。
    • 例如ServeHTTP,而不是ServeHttp
    • 使用XMLHTTPRequest或者xmlHTTPRequest(取决于该变量是否是公有变量)。
  • 变量距离其被使用的地方越远,则需要携带越多的上下文信息。
    • 全局变量在其名字中需要更多的上下文信息,使得其在不同地方可以轻易辨认出其含义。

几个命名规范与否的小示例,如下:

在这里插入图片描述

在这里插入图片描述

Ⅱ. function

  • 函数名不携带报名的上下文信息,因为报名和函数名总是成对出现。

在这里插入图片描述

  • 函数名应尽量简短
  • 当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义。
  • 当名为foo的包某个函数返回类型T时(T并不是Foo),可以在函数名中加入类型信息。

Ⅲ. package

  • 只由小写字母组成。不包含大写字母和下划线等字符
  • 简短并包含一定的上下文信息。例如schemetask等。
  • 不要与标准库同名。例如不要使用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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherries Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值