为什么 go-lint 给出了关于初始主义的不一致建议?

Why is go-lint is giving inconsistent suggestions about initialisms?

go-lint 建议如下:

method CreateStaticCssPath should be CreateStaticCSSPath

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

它允许以前的方法:

CreateStaticJsPath

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

Words in names that are initialisms or acronyms (e.g. "URL" or "NATO") have a consistent case. For example, "URL" should appear as "URL" or "url" (as in "urlPony", or "URLPony"), never as "Url". As an example: ServeHTTP not ServeHttp. For identifiers with multiple initialized "words", use for example "xmlHTTPRequest" or "XMLHTTPRequest".

This rule also applies to "ID" when it is short for "identifier" (which is pretty much all cases when it's not the "id" as in "ego", "superego"), so write "appID" instead of "appId".

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

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

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

我希望 linter 有一个硬编码的常见首字母缩写列表(CSSURLHTMLID 等),预计误报率非常低,只针对那些。尝试将简洁的符号名称解析为人类可理解的文本时,其他任何事情都会很快陷入疯狂的境地。