有没有一种方法可以使下面的常量更易读,而又不打破金刚命名的惯例?
const ( // stream types
MPEGDASHStream = iota
HLSStream = iota
MPEGTSUDPStream = iota
MPEGTSRTPStream = iota
)发布于 2016-10-03 11:13:56
Go的命名约定更喜欢MixedCaps而不是下划线,所以不要使用它们。来源:有效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
// ...
)此外,您不需要使用iota标识符重复表达式。规范:常量声明:
在括号大小的
const声明列表中,表达式列表可以从除第一次声明之外的任何声明中省略。这种空列表等效于前面的第一个非空表达式列表及其类型(如果有的话)的文本替换。因此,省略表达式列表等同于重复前面的列表。
因此,在您的例子中,它可以简单地如下所示,这是非常清晰和可读的:
// stream types
const (
StreamMPEGDASH = iota
StreamHLS
StreamMPEGTSUDP
StreamMPEGTSRTP
)有关更多细节,请参见Go代码评审评论。在首字母部分可以找到缩略语:
名字中的单词是首字母或首字母缩略词。"URL“或”北约“)有一个一致的例子。例如,"Url“应该以"URL”或"URL“(如"urlPony”或"URLPony")的形式出现,而不是以"url“的形式出现。下面是一个例子: ServeHttp而不是ServeHTTP。 当"ID“是”标识符“的缩写时,这个规则也适用于”ID“,所以写"appId”而不是"appID“。
发布于 2020-08-11 09:53:59
你所做的是典型的戈朗方式。
根据代码评审注释,您应该在ALLCAPS中对缩略语进行字符串化
名字中的单词是首字母或首字母缩略词。"URL“或”北约“)有一个一致的例子。例如,"Url“应该以"URL”或"URL“(如"urlPony”或"URLPony")的形式出现,而不是以"url“的形式出现。举个例子: ServeHttp而不是ServeHTTP。对于具有多个初始化“word”的标识符,例如使用"XMLHTTPRequest“或"xmlHTTPRequest”。
我喜欢吗?不是很多。
您可以稍微移动一些单词,使其更易读,例如MPEGStreamDASH。
如果你真的讨厌它--那么你需要意识到这是你的代码,你可以做你想做的任何事情--不管是MpegDashStream,MPEG_DASH_Stream,甚至MpEg_DaSh_StreaM --但那是邪恶的;-)
https://stackoverflow.com/questions/39830166
复制相似问题