2016-10-03 8 views
1

golang 명명 규칙을 위반하지 않고 아래의 상수를 더 읽기 쉽게 만들 수있는 방법이 있습니까?접착제로 붙여진 약어 및 골란 (golang) 명명 규칙

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

왜 밑줄을 사용하지 않습니까? 'MPEG_DASH_STREAM' –

+0

그건 논리적이지만 추천 한게 아닌가. – ababo

+0

코드 스타일을 깨지 않고도 더 쉽게 읽을 수있는 방법이 있다고 생각하지 않습니다. 나는 당신이 원하는 것을 고집하고, icza의 조언을 받아 상수 앞에 'Stream'을 넣을 것을 제안합니다. –

답변

1

이동의 이름 지정 규칙은 오히려 밑줄보다 MixedCaps을 선호하므로 사용하지 않습니다. 출처 : Effective Go: MixedCaps

일반적으로 엔티티의 여러 값에 대한 상수가있는 경우보다 쉽게 ​​읽을 수있는 방법은 엔티티에서 상수 이름을 시작한 다음 구체적인 값의 이름이 오는 것입니다.

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 식별자로 표현을 반복 할 필요가 없습니다 : 위대한 예는 net/http 패키지입니다. 괄호 const 선언 목록 내 Spec: Constant declarations:

는 식 목록은 제 선언 있지만 생략 될 수있다. 이러한 빈 목록은 비어 있지 않은 첫 번째 표현식 목록의 텍스트 대체 및 해당 유형 (있는 경우)과 동일합니다. 따라서 표현식 목록을 생략하면 이전 목록을 반복하는 것과 같습니다.

따라서 귀하의 경우 단순히 매우 명확하고 읽을 수있는 다음과 같을 수 있습니다 :

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

또한 자세한 내용은 Go Code Review Comments를 참조하십시오. 약어는 Initialisms 섹션에서 찾을 수 있습니다

단어를 이니셜이나 약어 (예 : "URL"또는 "NATO")입니다 일관된 경우이 이름에. 예를 들어, "URL"은 "URL"또는 "url"(예 : "urlPony"또는 "URLPony")로 나타나야하며 "Url"로 나타나지 않아야합니다. 여기 예제가 있습니다 : ServeHTTP ServeHttp.

이 규칙은 "식별자"가 짧을 때 "ID"에도 적용되므로 "appId"대신 "appID"로 작성하십시오.

+1

그렇습니다. 그러나 연속 된 두문자어는 어떻게됩니까? 그들은 그 (것)들을 확실히 읽을 수 없게한다. – ababo

+0

나는 이것을 더 좋아한다! 효과적인 go 웹 페이지도 다음과 같이 말합니다. –

+0

"MixedCaps 마지막으로, Go의 규칙은 여러 단어의 이름을 쓰는 데 밑줄이 아닌 MixedCaps 또는 mixedCaps를 사용하는 것입니다." –