这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
高质量编程
什么是高质量?—— 编写的代码能够达到正确可靠、简洁清晰的目标可称之为高质量代码。
高质量的代码不仅使得其运行更加稳定,也使人阅读起来心悦。
这篇文章主要从以下四个方面来进行叙述:
- 代码格式
- 注释
- 命名规范
- 控制流程
代码格式
不同语言都存在一些根据常用代码风格来格式还代码的程序。
- 针对Go语言,有
gofmt
; - 针对Python语言,有
autopep8
等; - 针对JavaScript语言,有
prettier
等;
根据程序所用代码风格,我们的代码能统一格式;另外可以去官方网站去学习对应代码风格。
对于一些程序,如js的prettier
可以自行配置风格,如缩进空格数。
注释
我们查看网上很多火热模块的源码,总能发现大量的注释,其内容有的甚至比代码本身还多,但是这是有道理的。
关于注释,它需要使其包含以下信息:
- 注释应该解释代码作用,什么情况可以使用该代码
- 注释应该解释代码如何做的,如实现过程
- 注释应该解释代码实现的原因,如提供上下文等外部因素
- 注释应该解释代码什么情况会出错,即代码使用的限制条件
另外,我们需要知道注释出现的位置和时机,如:
- 编写一个新的模块文件,在文件头注明该模块的作用
- 编写一个新的函数,注明函数的作用、入出参等
- 编写测试文件,用注释来标明,对应断言或判断的例子是什么
- 尽量通过易理解的变量名、函数名来避免不必要的注释
命名规范
命名也是在高质量编程中一个重要的点,只需要保证一个关键点:精简。这不仅仅是针对代码编写者,也是针对代码阅读者。
- 简洁。比如,我们看到对方代码包含一个
u
,我们就需要联想到它是user
的简写,编写者写起来也方便 - 词性。关于词性这一点,常常表现在变量和函数名的表现上,变量经常用名词,比如
product
;而函数名常用动词、动名词等,比如sellProduct
。 - 重复度。某些重复度高的词语,如
res
和resp
可以考虑去更换命名。
控制流程
控制流程包含各种判断、分支、循环等。有以下几点需要注意:
- 不论何种语言都需要避免各种嵌套,这也是
js
中Promise
语法出现的一个原因,防止出现嵌套地狱。而针对Go语言来说,嵌套主要容易出现在err
的判断与处理上,应该多采用以下方式,提前处理错误。
res, err := dict.Get('xxx')
if err != nil {
return
}
// ...
- 针对循环和分支,多注意
break
和continue
的使用。