目录名规范
- 采用全小写单词,如
cmd
, internal
。
- 必要时可用中划线分隔,如
kube-scheduler
。
- 项目名遵循同样规范,如
userapi
, kubernetes
。
- 避免使用下划线命名,如
third_party
。
正确示例
cmd
internal
pkg
task
kube-scheduler
kube-controller-manager
反向示例
CMD
kubeScheduler
KubeScheduler
kube_scheduler
包名规范
- 简短清晰,小写单一单词,避免冗余和蛇形命名。
- 避免缩写产生歧义,如
strconv
, syscall
。
- 不使用用户常见名,如避免
buf
作为包名。
- 不使用复数形式,如
net/url
而非 net/urls
。
- 避免使用通用名称如
common
, util
。
- 不同目录中可有相同包名,如
runtime/pprof
和 net/http/pprof
。
正确示例
controller
stringset
tabwriter
反例
MyUtil
util
time // 与标准库重名
tabWriter
TabWriter
tab_writer
文件名规范
- 多数情况下采用小写单词,必要时用下划线分隔(蛇形命名法)。
- 测试文件以
_test.go
结尾。
- "隐藏文件" 以
.
或 _
开头。
- 特定操作系统或架构的文件使用特定后缀,如
name_linux.go
。
正确示例
router.go
middleware.go
webshell.go
反面示例
routers.go // 复数
fooBar.go
Service.go
总结
- 采用
lowercase
而非 camelCase
或 PascalCase
。
- 目录名必要时使用
kebab-case
,文件名使用 snake_case
。
- 命名选择存在模糊地带,根据项目和团队习惯调整。