더북(TheBook)

Go 코드 컨벤션 변수 이름의 길이

프로그래밍할 때 변수 이름은 그 의미를 정확하게 설명할 수 있을 정도로 구체적이어야 한다. 대부분의 프로그래밍 언어에서는 너무 짧은 이름은 피하고, 보통 한 단어 또는 두세 단어를 조합하여 변수 이름을 짓는다.

하지만 Go에서는 변수의 이름을 될 수 있으면 짧고 간결하게, 그리고 함축적으로 짓도록 권장한다. 단어 여러 개가 조합된 긴 이름은 가독성을 떨어뜨리기 때문이다. 대신 변수의 범위를 최소한으로 제한하여, 그 범위 안에서는 변수의 의미가 모호해지지 않게 한다. Go의 기본 라이브러리 패키지 소스 코드를 보다 보면 w, p, r처럼 한 글자로 된 변수 이름을 자주 볼 수 있다.

다음은 fmt 패키지의 Fprintln 함수이다. 앞서 이야기했듯이 한 글자로 된 변수 이름이 많다.

func Fprintln(w io.Writer, a ...interface{}) (n int, err error) {
    p := newPrinter()
    p.doPrint(a, true, true)
    n, err = w.Write(p.buf)
    p.free()
    return
}

Go 코드 컨벤션 권장 표기법

단어 여러 개를 조합해서 이름을 지어야 한다면 밑줄(_)로 연결하지 말고 낙타 표기법(camel casing)으로 짓는다(예를 들면 CamelCase 또는 camelCase). 내장 함수 이름이나 패키지 이름은 피하는 것이 좋다.

Go 코드 컨벤션 Getter와 Setter

특정 객체를 반환하는 함수나 메서드의 이름은 명사형으로 짓고 Get 접두어를 붙이지 않는다.

func Connection() *Conn { // GetConnection()으로 쓰지 않음
    // ...
    return conn
}

특정 객체를 변형하거나 설정하는 함수의 이름 앞에는 Set을 붙인다.

func SetId(i int) { ... }

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.