有没有办法在不破坏 golang 命名约定的情况下使下面的常量更具可读性?
const ( // stream types
MPEGDASHStream = iota
HLSStream = iota
MPEGTSUDPStream = iota
MPEGTSRTPStream = iota
)
有没有办法在不破坏 golang 命名约定的情况下使下面的常量更具可读性?
const ( // stream types
MPEGDASHStream = iota
HLSStream = iota
MPEGTSUDPStream = iota
MPEGTSRTPStream = iota
)
Go 的命名约定更喜欢 MixedCaps 而不是下划线,所以不要使用它们。资料来源:有效围棋: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
// ...
)
此外,您不需要使用iota
标识符重复表达式。规范:常量声明:
在带括号的
const
声明列表中,表达式列表可以从除第一个声明之外的任何内容中省略。这样的空列表等价于对前面的第一个非空表达式列表及其类型(如果有)的文本替换。因此,省略表达式列表等同于重复前面的列表。
因此,在您的情况下,它可能看起来像这样,非常清晰易读:
// stream types
const (
StreamMPEGDASH = iota
StreamHLS
StreamMPEGTSUDP
StreamMPEGTSRTP
)
另请参阅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
- 但那将是邪恶的;-)