命名规范 · T3Go 开发手册 · 看云
`golang`包名大小写不敏感,同一大词大小写被认为是同一个包名,编译时统一转为小写导入,并且编译器会给出提示。参考了`K8S`开源项目和其他一些注明开源项目,发现其目录命名全小写,单词之间没有分隔符,`K8S`项目中的`shell`脚本命名为蛇形命名(snake case),还有些以`-`中横线命名,似乎看起来目录的命名并没有特别强调统一一致。任何一种命名规约都有他的道理,以下命名参考了大量规约作为一种解决方案。
<br />
<p style='color:green;font-weight:800'>每种命名风格,都有其自身含义,并不太赞成 “清一色” 式的一致,因为这会损失一些有意义的命名。</p>
<div style='height:30px'></div>
### 1、目录命名
1.1、默认情况下目录名用全小写,单词间无需分割
1.2、`-`用中横线分割目录名,这代表这个目录下不允许直接放置`.go`文件,因为遵循`.go`文件包名与其所在目录名保持一致的原则(3.包命名规范中会提到),而包名又不允许有`-`中横线,这代表对放入这个目录下的代码需要再分组。
<div style='height:30px'></div>
### 2、.go 文件命名规范
2.1、业务类代码文件使用大驼峰式命名
2.2、多个项目可共用的的代码文件使用小写命名。
2.3、与业务代码和共用代码都无关的代码文件使用全小写蛇形命名(下划线分割),比如 `_test`文件,`golang`的单元测试就强制了要以`_test`结尾去命名`.go`文件。
>这种命名规范摒弃了“清一色”的命名风格,但是为不同代码划分了类型,当你在`IDE`打开了很多个Tab标签时,通过这这种命名上的差别能更快速的找到你要改代码目标文件。
<div style='height:30px'></div>
### 3、包命名
`.go`文件所在目录作为改文件的包名,可以把每个`.go`文件都单独装在一个目录中,即每个`.go`文件都拥有自己的包名,这样的好处是在`IDE`中可以通过打出包名快速定位到想要的包,然后编辑器智能导入,无需人工去敲出`import`包路径。
<div style='height:30px'></div>
### 4、函数/方法命名
同`.go`文件命名类似,分两种风格:
1、业务类的方法使用大驼峰命名
2、多个项目可共用的函数使用蛇形命名(下划线分割)
> `golang`中你无法限制函数名要统一大写或者小写,因为首字母大小写决定了函数的作用域。`golang`仿佛一个叛逆者,就是要反其道而行之。
<div style='height:30px'></div>
### 5、变量命名
1、一般使用驼峰式命名,首字母大小写无法强制,因为它代表了变量的作用域
2、与`http`请求参数映射的变量保持与其相同命名,例如`http`请求参数使用`snake case`以全小写和中横线分割来命名请求参数,因此,凡是接收前端递交过来的参数的变量其命名都使用`snake case`方式,例如参数名与接收参数的变量名保持一致,这样做的好处是知道这种命名风格的变量代表里面存的是前端递交过来的数据,见字如面,如果对系统安全性比较敏感,看到这类命名风格的变量就需要引起注意。
<div style='margin-top:50px;color:red;line-height:24px'>
以上命名风格的理念遵循实战派风格,放弃了我之前遵循的洁癖派风格,看起来没有大统一,实际上是分而治之的统一。这些所谓的技巧看起来微不足道,但是在大量的实践中这些类似小小的细节却能帮助我们更轻松的维护代码。
</div>