为什么 go-lint 会给出关于首字母缩写的不一致建议?

Bar*_*aby -2 go golint

go-lint 建议如下:

method CreateStaticCssPath should be CreateStaticCSSPath
Run Code Online (Sandbox Code Playgroud)

linter 是否正确,如果正确,为什么?

它允许以前的方法:

CreateStaticJsPath
Run Code Online (Sandbox Code Playgroud)

Fli*_*mzy 5

去命名约定规定initialisms应全部大写写(实际上是:在一致的情况下,根据第一个字符是否应该大写与否)。这就是 linter 所抱怨的。

名称中的首字母缩写词或首字母缩略词(例如“URL”或“NATO”)具有一致的大小写。例如,“URL”应该显示为“URL”或“url”(如“urlPony”或“URLPony”),而不是“Url”。例如:ServeHTTP 不是 ServeHttp。对于具有多个初始化“词”的标识符,例如使用“xmlHTTPRequest”或“XMLHTTPRequest”。

当“ID”是“identifier”的缩写时,此规则也适用于“ID”(当它不是“ego”、“superego”中的“id”时,这几乎是所有情况),所以写“appID”而不是“appId” ”。

因此,假设 CSS 和 JS 是首字母缩写,CreateStaticCSSPath并且CreateStaticJSPath将是编写每个符号名称的“Go way”。

尽管 linter 对这些失败的捕获自然是有限的。这里不可能 100% 准确,因为上下文(和人类直觉)是必要的。

CreateJs可能意味着“创建 JavaScript”,也可能意味着“创建多个J”(无论上下文中的“J”是什么)。

我希望 linter 有一个硬编码的常见初始值列表(CSSURLHTMLID等),预计它们的误报率非常低,并且只查找那些。当试图将简洁的符号名称解析为人类可以理解的文本时,其他任何事情都会很快陷入疯狂。