2016-10-03 76 views
1

有沒有辦法讓下面的常量更具可讀性而不會破壞golang命名約定?膠合首字母縮拼詞和golang命名約定

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

爲什麼不使用下劃線? 'MPEG_DASH_STREAM' –

+0

這是合乎邏輯的,但我懷疑這是推薦。 – ababo

+0

我不認爲有一種方法可以在不破壞代碼風格的情況下使它們更具可讀性。我建議堅持要你有,也許採取icza的建議,並把'流'放在常量前面。 –

回答

1

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 
    // ... 
) 

而且你不需要用iota識別重複表達。 Spec: Constant declarations:

在一個圓括弧const聲明列表表達式列表可以由任何但是第一聲明可以省略。這樣的空列表相當於第一個前面的非空表達式列表及其類型(如果有的話)的文本替換。因此省略表達式列表等同於重複之前的列表。

所以你的情況可能只是這個樣子,這是相當清晰可讀:

// stream types 
const (
    StreamMPEGDASH = iota 
    StreamHLS 
    StreamMPEGTSUDP 
    StreamMPEGTSRTP 
) 

另見Go Code Review Comments瞭解更多詳情。縮略語可在Initialisms部分中找到:

詞是initialisms或首字母縮寫(例如,「URL」或「北約」)有一個一致的情況下的名稱。例如,「URL」應該顯示爲「URL」或「url」(如「urlPony」或「URLPony」),不會顯示爲「Url」。這裏有一個例子:ServeHTTP不是ServeHttp。

這個規則也適用於「ID」,當它是「標識符」的簡稱時,所以請寫「appID」而不是「appId」。

+1

是的,但是排序的首字母縮略詞呢?他們使他們相當難以理解。 – ababo

+0

我更喜歡這個!有效的去網頁也這樣說: –

+0

「MixedCaps 最後,Go中的約定是使用MixedCaps或mixedCaps,而不是下劃線來編寫多字的名稱。」 –

相關問題