aba*_*abo 7 naming-conventions acronym go
有没有一种方法可以使下面的常量在不违反golang命名约定的情况下更具可读性?
const ( // stream types
MPEGDASHStream = iota
HLSStream = iota
MPEGTSUDPStream = iota
MPEGTSRTPStream = iota
)
Run Code Online (Sandbox Code Playgroud)
Go 的命名约定更喜欢 MixedCaps 而不是下划线,所以不要使用它们。资料来源:Effective Go:MixedCaps
通常,当您有实体的不同值的常量时,更容易阅读的方法是以实体开头的常量名称,然后是具体值的名称。很好的例子是net/http包:
const (
MethodGet = "GET"
MethodHead = "HEAD"
MethodPost = "POST"
// ...
)
const (
StatusContinue = 100 // RFC 7231, 6.2.1
StatusSwitchingProtocols = 101 // RFC 7231, 6.2.2
StatusProcessing = 102 // RFC 2518, 10.1
StatusOK = 200 // RFC 7231, 6.3.1
StatusCreated = 201 // RFC 7231, 6.3.2
// ...
)
Run Code Online (Sandbox Code Playgroud)
此外,您不需要重复带有iota标识符的表达式。规范:常量声明:
在带括号的
const声明列表中,除了第一个声明之外,表达式列表可以省略。这样的空列表等效于第一个前面的非空表达式列表及其类型(如果有)的文本替换。因此,省略表达式列表等同于重复前面的列表。
因此,在您的情况下,它可能看起来像这样,非常清晰易读:
// stream types
const (
StreamMPEGDASH = iota
StreamHLS
StreamMPEGTSUDP
StreamMPEGTSRTP
)
Run Code Online (Sandbox Code Playgroud)
另请参阅Go Code Review Comments以获取更多详细信息。首字母缩略词可以在Initialisms部分找到:
名称中的首字母缩写词或首字母缩略词(例如“URL”或“NATO”)具有一致的大小写。例如,“URL”应该显示为“URL”或“url”(如“urlPony”或“URLPony”),而不是“Url”。这是一个示例:ServeHTTP 不是 ServeHttp。
当“ID”是“identifier”的缩写时,此规则也适用于“ID”,因此请写“appID”而不是“appId”。
你所做的是规范的 Golang 方式。
根据Code Review Comments,您应该将首字母缩写词串在ALLCAPS:
名称中的首字母缩写词或首字母缩略词(例如“URL”或“NATO”)具有一致的大小写。例如,“URL”应该显示为“URL”或“url”(如“urlPony”或“URLPony”),而不是“Url”。例如:ServeHTTP 不是 ServeHttp。对于具有多个初始化“词”的标识符,例如使用“xmlHTTPRequest”或“XMLHTTPRequest”。
我喜欢吗?没那么多。
您可以稍微移动一下单词以使其更具可读性,例如 MPEGStreamDASH
如果你真的讨厌它——那么你需要意识到这是你的代码,你可以做任何你喜欢的事情——不管它MpegDashStream,MPEG_DASH_Stream甚至MpEg_DaSh_StreaM——但这将是邪恶的;-)