go语言的代码规范
为什么要有代码规范
1.团队多人开发项目,需要编码规范
- 建立合理的规范,可以建立团队在技术上沟通的模式,更重要的是,还可从团队内部,重用已有的程序智慧,为成员提供了有高度的脚手架,避免成员个体在程序设计上特定弱点所带来的质量短板。
2.软件维护,需要编码规范
- 一件软件的整个生命周期成本的80%用于维护,对于项目原作者几乎不可能终身维护项目,规范的编码项目,有助于减少后期的维护成本,以及项目的存活时间。
3.减少人与人之间的沟通成本,能提高代码质量
- 理解并遵守相同编码规范的人,就像在讲同一种语言,沟通会快速而准确。而在发生编码风格冲突的时候,编码规范将会作为仲裁的最终依据,减少沟通的无效消耗。
4.优秀的工程师总能写出让能一眼读懂的代码
- 遵守相同编码规范的代码,常常看起来就像是一个人写出来的一样。具有相同的风格是降低学习曲线的有效方式。当你新到一个具有编码规范的公司,读懂某几个函数或模块的写作方式后,常常代表你可以快速读懂相同规范的所有代码了。
代码规范
命名规范
命名是代码规范中很重要的一部分,统一的命名规则有利于提高代码的可读性,好的命名仅仅通过命名就可以获取足够的信息
- 当命名(包括常量 类型 变量 函数名 结构字段等)以一个大写字母开头,那么这种形式的标识符就可以被外部的包所使用的,
- 当命名如果是小写开头,则该标识符对外是不可见的,只允许在内部使用
- 其实就是有点像PHP中我们在类中声明一个变量 会用到public和private一样,但是在PHP中需要你很明确的表示出来,在golang中使用大小写区分一下就可以了.可以说是很明智的一个改动
包名:package 目录名
保持package的名字和目录保持一致,尽量采取有意义的包名,简短 有意义 尽量和标准库不冲突.包名应该为小写单词,不要使用下划线和大小写混合
文件名
尽量采取有意义的文件名,应该为小写单词,使用下划线分割各个单词,也称为蛇形命名法,比如 snake_case
结构体命名
- 采用驼峰命名,首字母根据权限不同选择大小写,比如 UserName goodsName
接口命名
- 接口的名称也是驼峰命名法,但是单个函数的结构名以er作为结尾,如Reader Writer
变量命名法
- 一般遵循驼峰命名法,根据访问权限设置首字母大小写
- 但是如遇特定名词,则全部大写比如 APIClient URLArray
- 如果是bool类型的判断,则需要用 HasRecord CanGet等等
常量命名
- 常量均需使用全部大写的字幕组成,并使用下划线分词,比如 API_VER FILE_PATH,如果是枚举类型,需要先创建相应的类型
注释
/**/是块注释 //是行注释
包
-
go自带包
-
第三方的包
-
自己的包
错误处理
- 错误处理的原则就是不能丢弃任何有返回err的调用,不要使用_丢弃,接收到错误,要么返回err要么记录log
- 尽早return 一旦有错误发生,马上返回
- 尽量不要使用panic,除非你知道自己在做什么
- 错误描述尽量是英文小写,不需要标点结尾
- 采用独立的错误流进行处理