• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
非妃是公主
帮助1

学新通

一、高质量编程

定义

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

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

二、代码规范

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,一位计算机科班在校大学生,写博客用来记录自己平时的所思所想!
💞💞💞 内容繁杂,又才疏学浅,难免存在错误,欢迎各位大佬的批评指正!
👋👋👋 我们相互交流,共同进步!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfiagf
系列文章
更多 icon
同类精品
更多 icon
继续加载