go - 为什么 go-lint 给出的关于首字母缩写的建议不一致?
问题描述
go-lint 建议如下:
method CreateStaticCssPath should be CreateStaticCSSPath
linter 是否正确,如果正确,为什么?
它允许以前的方法:
CreateStaticJsPath
解决方案
Go 命名约定规定首字母应全部大写(实际上:在一致的情况下,取决于第一个字符是否应大写)。这就是 linter 所抱怨的。
名称中的首字母缩写词或首字母缩写词(例如“URL”或“NATO”)具有一致的大小写。例如,“URL”应该显示为“URL”或“url”(如“urlPony”或“URLPony”),而不是“Url”。例如:ServeHTTP 不是 ServeHttp。对于具有多个初始化“单词”的标识符,例如使用“xmlHTTPRequest”或“XMLHTTPRequest”。
当它是“标识符”的缩写时,此规则也适用于“ID”(几乎所有情况下,它不是“ego”,“superego”中的“id”),所以写“appID”而不是“appId” ”。
因此,假设 CSS 和 JS 是首字母缩写词,CreateStaticCSSPath
并且CreateStaticJSPath
将是编写每个符号名称的“Go way”。
虽然 linter 对这些故障的捕捉自然是有限的。这里不可能 100% 准确,因为上下文(和人类直觉)是必要的。
CreateJs
可能意味着“创建 JavaScript”,也可能意味着“创建多个J
”(无论上下文中的“J”是什么)。
我希望 linter 有一个硬编码的常见首字母缩写列表(CSS
, URL
, HTML
, ID
, 等),预计误报率非常低,并且只查找那些。当试图将简洁的符号名称解析为人类可以理解的文本时,其他任何事情都会很快陷入疯狂的境地。
推荐阅读
- c# - 如何在复选框周围添加效果
- azure - 将端点 VPN 客户端连接到 azure 中的多个 vnet
- r - 当A列数据最大时如何从B列中提取数据?在 R 中
- python - 如何在 selenium python 中同时使用多个浏览器实例?
- html - 按钮浮动到输入表单 HTML 的右侧
- dialog - Blazor 同步确认同步融合
- ios - 请帮助更好地了解崩溃。崩溃细节:在 iOS 14、Xcode 12 上使用 Core Data
- javascript - 如何播放 .m4s 文件。并将它们转换为 Discord Bot 的二进制流
- grails - grails dbm-update 有时会给出 groovy.lang.MissingMethodException
- ruby - 如何为排序添加默认值:在 query_type.rb