代码规范

目录结构

├── Dockerfile // Dockerfile文件
├── Makefile // 本地开发使用makefile
├── README.md // 介绍
├── app.cfg // 配置文件
├── cmd // 启动目录
│   ├── client // 客户端操作入口
│   └── server // server 端入口
├── config.yaml // kubeconfig 文件
├── docs // 文档
│   ├── README.md
├── go.mod // go mod依赖
├── go.sum // go mod依赖详情
├── install // 可能需要安装的一些yaml文件
├── src // 源码包 以下分为两个层级,src/下为组件, src/pkg/下 为模块
│   ├── amqp // rabbimt 的操作实现
│   ├── casbin // casbin 的实现
│   ├── cmd // cmd参数处理 
│   ├── config // 配置文件处理实例化
│   ├── consul // 操作consul kv 的实现
│   ├── email
│   ├── event
│   ├── git-repo // 操作 gitlab及github 的实现
│   ├── istio
│   ├── jenkins // 操作jenkins 的实现
│   ├── jwt // jwt 
│   ├── kubernetes // 连接kubernetes这病
│   ├── logging
│   ├── middleware // 中间件
│   ├── mysql // 数据连接处理
│   ├── pkg // 具体的业务实现逻辑
│   │   ├── account // 账号相关实现
│   │   ├── audit // 就用审核逻辑
│   │   ├── auth // 授权登陆
│   │   ├── build // 应用的构建逻辑
│   │   ├── configmap
│   │   ├── consul
│   │   ├── cronjob
│   │   ├── dashboard
│   │   ├── deployment
│   │   ├── discovery
│   │   ├── event
│   │   ├── gateway
│   │   ├── git
│   │   ├── group
│   │   ├── hooks
│   │   ├── ingress
│   │   ├── market
│   │   ├── member
│   │   ├── monitor
│   │   ├── msgs
│   │   ├── namespace
│   │   ├── notice
│   │   ├── permission
│   │   ├── persistentvolume
│   │   ├── persistentvolumeclaim
│   │   ├── pod
│   │   ├── proclaim
│   │   ├── project
│   │   ├── public
│   │   ├── role
│   │   ├── service
│   │   ├── statistics
│   │   ├── storage
│   │   ├── template
│   │   ├── terminal
│   │   ├── tools
│   │   ├── virtualservice
│   │   ├── wechat
│   │   └── workspace
│   ├── redis // redis 单点或集群的实现
│   ├── repository // 操作数据库的具体实现
│   │   ├── types // 数据库表的struct
│   └── util // 所需要用到的工具
└── static // 静态目录 前端所编译好的代码
    ├── terminal.html
    └── xterm // 前端命令行终端

代码规范

格式化代码

Golang 代码使用 goimports 和 gofmt 进行代码格式化

命名规范

文件名命名规范

用小写,尽量见名思义,看见文件名就可以知道这个文件下的大概内容,对于源代码里的文件,文件名要很好的代表了一个模块实现的功能。

src/ 目录下创建的是可公用的组件,src/pkg/下是各个功能模块,模块之间可以相互调用。

包名

保持 package 的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,尽量和标准库不要冲突。命名尽量不使用分隔符。

模块包规范

新增加的模块必须在src/pkg目录下,每个模块必须包含4个文件,分别是service.go、logging.go、endpoint.go、transport.go

logging.go:

service.go 里的每个方法必须带有一个logging方法,日志输打印入参入出参和错误信息。

接口规范

定义一个接口:

接口的实现:

变量

  • 局部变量:驼峰式,小写字母开头

  • 全局变量:变量名采用驼峰标准

如:

常量

常量全部以驼峰式大写字母开头的方式命名:

错误处理命名

错误处理的原则就是不能丢弃任何有返回 err 的调用,不要采用_丢弃,必须全部处理。接收到错误,要么返回 err,并用 log记录下来。 error 的信息不要采用大写字母,尽量保持你的错误简短,但是要足够表达你的错误的意思。每个pkg下的模块的错误必须定义在本模块下,不得跨模块调用。

除了在man.go可以使用panic外,其于地方一率不得使用panic。

错误变量名以Err开头,接包名最后接具体的错误 Err{pkg}NotFound: xxx 未找到

命名参考:

Last updated

Was this helpful?