正所谓,书同文,车同轨。只有统一一样东西的标准,所有人按照这个标准去执行才能把这样东西做到最好,减少很多不必要的麻烦。编程亦是,高质量的编程必然离不开规范的编程格式习惯。看完高质量编程及编程规范收获到一些个人比较印象深刻的知识。
变量/函数 命名
变量命名要清晰,让人能看出变量的作用和目的,不能简单为了自己当时编程方便以一些随意的字母组合如aa,b,等。这样的命名不但让别人难看懂这个变量的作用和意图,甚至过后自己review的时候也忘记自己当初编程时的想法思路。对于变量命名还有许多规范,比如驼峰命名法。另外需要注意的是,GO对于变量/函数的private和public是通过变量/函数的首字母是否为大写实现划分的。别的包若想直接引用某一个包里面的函数,需要该函数首字母是大写方可直接使用。
注释
注释,有助于自己或者别人review代码时,快速理解不同代码块实现的功能以及揣测编者的意图。阅读没有注释的代码就如同你揣测你喜欢的人的心思一样,痛苦。 注释应做到:
- 解释结构体、变量的作用(如果通过其命名便可知道其作用的话则不用)
- 说明函数实现的功能和可能出现的问题
- 逻辑特别复杂的代码块则需要注释其实现的逻辑,便于后续阅读维护。比如特别多函数调用以及使用递归的对我这个菜鸡来说就很需要这个!
- ......
流程控制
- 避免过多嵌套,尽量不要出现多层if-else嵌套,非常影响理解!三个及以上的if-else嵌套就让人感到头疼了!!!
- 代码简洁,减少流程,如下所示
func xxx(b,c int) variable int{
// a:=b+c
// return a
return b+c
}
//没必要多一些无用的中间产物
错误处理
对于可能出现错误的地方一定要搭配相应的错误处理,Go有相应配套的Error包。业务代码中不建议使用panic,一旦某处出现panic而代码中没有相应的recover会导致后续功能无法继续。对于error处理,最经典的代码莫过于
if err != nil{
fmt.Println(err)
......
}
不需要格式化的话,输出错误通过log输出就好了。