基于V2版本。
需要使用go/parser
语法解析包来实现检测。
以下,资源名称(业务模块名称)约定为Xxx
,方法名称约定为Mmm
。
分类 | 子类 | 规则 |
---|
命名规范 | 文件命名 | - 文件名称必须以当前层级资源名称的全小写命名(不是
Snake 格式)开头,例如:userinfo.go, userinfo_create.go 。允许带分层前置,例如:cnt_userinfo.go
|
Cmd 层 | - 如果使用对象方式管理命令行前提下:
- 内部资源类型必须以
cXxx 命名 - 类型方法输入及输出参数类型必须以资源名称开头,即上面的
Xxx - 资源类型方法命名应当以指针方式,例如
(c *cXxx) 或者(*cXxx)
|
Controller 层 | - 内部资源类型必须以c
Xxx 命名 - 路由方法输入及输出参数类型必须以资源名称开头,即上面的
Xxx - 资源类型方法命名应当以指针方式,例如
(c *cXxx) 或者(*cXxx) - 路由方法输入上下文参数必须以
ctx 命名,输入参数变量必须以req 命名,输出参数变量必须以res 命名,错误变量必须以err 命名
|
Service 层 | - 内部资源类型必须以
sXxx 命名 - 内部资源接口类型必须以
iXxx 命名 - 内部资源实例对象名称必须以
insXxx 命名 - 对象的方法命名应该以指针方式,例如
(s *sXxx) 或者(*sXxx) - 方法参数禁止透传API层的
XxxReq 对象,禁止返回XxxRes 对象 - 如果方法使用了
model 中Input/Output 结尾的结构体名称,应当使用 资源名称+操作+Input/Output ,即:XxxMmmInput/Output 。例如:UserCreateInput/UserCreateOutput - (若有)方法输入上下文参数必须以
ctx 命名,(若有)输入结构化参数变量必须以in 命名,(若有)输出结构化参数变量必须以out 命名,(若有)错误变量必须以err 命名 - 如果使用
ORM 的Data/Where 方法,并且使用到了dao 的Columns() 方法,那么推荐使用do 相关类型传参
|
链路跟踪 | Service 层 | Service 层不应当出现context.TODO(), context.BackGround(), gctx.New() 方法调用,否则会出现链路丢失问题。Service 层不应当出现Print/Debug/Info 等日志方法调用中第一个ctx 参数不能为nil ,否则会出现链路丢失问题。
|