Go语言学习记录之五:高质量编程 | 青训营笔记

37 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

高质量编程

什么是高质量?—— 编写的代码能够达到正确可靠、简洁清晰的目标可称之为高质量代码。

高质量的代码不仅使得其运行更加稳定,也使人阅读起来心悦。

这篇文章主要从以下四个方面来进行叙述:

  • 代码格式
  • 注释
  • 命名规范
  • 控制流程

代码格式

不同语言都存在一些根据常用代码风格来格式还代码的程序。

  • 针对Go语言,有gofmt
  • 针对Python语言,有autopep8等;
  • 针对JavaScript语言,有prettier等;

根据程序所用代码风格,我们的代码能统一格式;另外可以去官方网站去学习对应代码风格。

对于一些程序,如js的prettier可以自行配置风格,如缩进空格数。

注释

我们查看网上很多火热模块的源码,总能发现大量的注释,其内容有的甚至比代码本身还多,但是这是有道理的。

关于注释,它需要使其包含以下信息:

  • 注释应该解释代码作用,什么情况可以使用该代码
  • 注释应该解释代码如何做的,如实现过程
  • 注释应该解释代码实现的原因,如提供上下文等外部因素
  • 注释应该解释代码什么情况会出错,即代码使用的限制条件

另外,我们需要知道注释出现的位置和时机,如:

  • 编写一个新的模块文件,在文件头注明该模块的作用
  • 编写一个新的函数,注明函数的作用、入出参等
  • 编写测试文件,用注释来标明,对应断言或判断的例子是什么
  • 尽量通过易理解的变量名、函数名来避免不必要的注释

命名规范

命名也是在高质量编程中一个重要的点,只需要保证一个关键点:精简。这不仅仅是针对代码编写者,也是针对代码阅读者。

  • 简洁。比如,我们看到对方代码包含一个u,我们就需要联想到它是user的简写,编写者写起来也方便
  • 词性。关于词性这一点,常常表现在变量和函数名的表现上,变量经常用名词,比如product;而函数名常用动词、动名词等,比如sellProduct
  • 重复度。某些重复度高的词语,如resresp可以考虑去更换命名。

控制流程

控制流程包含各种判断、分支、循环等。有以下几点需要注意:

  • 不论何种语言都需要避免各种嵌套,这也是jsPromise语法出现的一个原因,防止出现嵌套地狱。而针对Go语言来说,嵌套主要容易出现在err的判断与处理上,应该多采用以下方式,提前处理错误。
res, err := dict.Get('xxx')
if err != nil {
    return 
}
// ...
  • 针对循环和分支,多注意breakcontinue的使用。