胶合首字母缩略词和golang命名惯例

胶合首字母缩略词和golang命名惯例,go,naming-conventions,acronym,Go,Naming Conventions,Acronym,有没有一种方法可以使下面的常量在不破坏golang命名约定的情况下更具可读性 const ( // stream types MPEGDASHStream = iota HLSStream = iota MPEGTSUDPStream = iota MPEGTSRTPStream = iota ) Go的命名约定更喜欢混合大写字母而不是下划线,所以不要使用它们。资料来源: 通常,当您为一个实体的不同值设置了常量时,更容易阅读的方法是以该实体开始常量

有没有一种方法可以使下面的常量在不破坏golang命名约定的情况下更具可读性

const ( // stream types
    MPEGDASHStream  = iota
    HLSStream       = iota
    MPEGTSUDPStream = iota
    MPEGTSRTPStream = iota
)

Go的命名约定更喜欢混合大写字母而不是下划线,所以不要使用它们。资料来源:

通常,当您为一个实体的不同值设置了常量时,更容易阅读的方法是以该实体开始常量名称,然后后跟具体值的名称。很好的例子是软件包:

此外,您不需要使用
iota
标识符重复表达式

在带括号的
const
声明列表中,除第一个声明外,可以从任何声明中省略表达式列表。这种空列表相当于前面第一个非空表达式列表及其类型(如果有)的文本替换。因此,省略表达式列表相当于重复上一个列表

因此,在您的情况下,它可以简单地如下所示,非常清晰易读:

// stream types
const (
    StreamMPEGDASH = iota
    StreamHLS
    StreamMPEGTSUDP
    StreamMPEGTSRTP
)
有关更多详细信息,请参见。首字母缩略词可在以下章节中找到:

名称中的首字母或首字母缩写词(如“URL”或“NATO”)大小写一致。例如,“URL”应显示为“URL”或“URL”(如“urlPony”或“urlPony”),而不是“URL”。下面是一个示例:ServeHTTP not ServeHTTP

当“ID”是“identifier”的缩写时,此规则也适用于“ID”,因此请写“appID”而不是“appID”


你所做的是规范的Golang方式

根据,您应该在
ALLCAPS
中列出首字母缩略词:

名称中的首字母或首字母缩写词(如“URL”或“NATO”)大小写一致。例如,“URL”应显示为“URL”或“URL”(如“urlPony”或“urlPony”),而不是“URL”。例如:servehttpnotservehttp。对于具有多个初始化“单词”的标识符,请使用例如“xmlHTTPRequest”或“xmlHTTPRequest”

我喜欢吗?没有那么多

您可以将单词移动一点以使其更具可读性,例如
MPEGStreamDASH


如果你真的讨厌它-那么你需要意识到它是你的代码,你可以做任何你喜欢的事情-无论是
MpegDashStream
MPEG\u-DASH\u-Stream
,甚至是
MPEG\u-DASH\u-Stream
,但那将是邪恶的;-)

你为什么不使用下划线
MPEG\u DASH\u STREAM
这是合乎逻辑的,但我怀疑它是否值得推荐。我认为没有一种方法可以在不破坏代码风格的情况下使它们更具可读性。我建议坚持你想要的,也许可以接受icza的建议,把
放在常量前面。我的建议是:可读性比教条式地坚持特定的代码风格更重要。在这种情况下,类似于
MpegDASHStream
MpegDASHStream
之类的东西似乎是一种可以接受的折衷方案。是的,但是顺序缩略词呢?它们让人看不懂。我更喜欢这个!有效的go网页还说:“混合大写字母最后,go中的惯例是使用混合大写字母或混合大写字母,而不是下划线来写多单词名称。”混合大写字母是可以的,但关于大写首字母缩略词的规则可能会产生不可阅读的序列,而无需视觉分离。
// stream types
const (
    StreamMPEGDASH = iota
    StreamHLS
    StreamMPEGTSUDP
    StreamMPEGTSRTP
)