Go 명명 규칙, 코드를 더 읽기 쉽게 만드는 방법
Go 언어의 명명 규칙(Naming Conventions)은 코드의 가독성 및 유지보수성에 큰 영향을 미침
CamelCase 및 PascalCase 사용, 약어 일관성 유지 등 구체적인 규칙 제시
커뮤니티에서는 규칙 준수의 필요성에 대한 다양한 의견(Various Opinions)이 존재함
일부 개발자는 규칙의 과도한 적용(Excessive Application)에 대한 회의적인 시각을 보임
Go 명명 규칙의 핵심 원리
Go 언어는 변수, 상수, 함수 등의 식별자(Identifier) 명명에 있어 몇 가지 엄격한 규칙(Strict Rules)을 적용한다. 식별자는 유니코드 문자, 숫자, 밑줄(_)만 포함할 수 있으며, 숫자로 시작할 수 없다. 또한, `break`, `default` 등 Go의 예약어는 식별자로 사용할 수 없다. 이러한 규칙을 준수하는 것은 기본이며, 코드의 컴파일 가능성을 보장한다. CamelCase와 PascalCase를 사용하여 가독성을 높이는 것이 권장된다.
패키지 명명 규칙 및 가이드라인
패키지 명명 규칙은 코드 구조를 결정하는 중요한 요소이다. 패키지 이름은 소문자 ASCII 문자와 숫자만 사용해야 하며, 간결하고 쉽게 입력할 수 있어야 한다. 여러 단어를 사용할 경우, 언더스코어 없이 소문자로 연결한다. 예를 들어, `ordermanager`는 적절하지만, `orderManager` 또는 `order_manager`는 부적절하다. 또한, 표준 라이브러리 패키지 이름과의 충돌을 피하고, 패키지 내용에 맞는 구체적인 이름(Specific Names)을 사용하는 것이 중요하다.
커뮤니티의 명명 규칙 준수 논쟁
커뮤니티에서는 Go 명명 규칙 준수에 대한 다양한 의견이 존재한다. 일부 개발자는 규칙 준수가 코드의 일관성을 높이고, 다른 개발자가 코드를 이해하기 쉽게 만든다고 주장한다. 반면, 규칙의 과도한 적용(Excessive Application)은 오히려 코드 작성의 자유를 제한하고, 불필요한 논쟁을 유발할 수 있다는 비판도 제기된다. 표현의 자유(Expressive Freedom)를 중시하는 개발자들은 규칙보다 코드의 명확성을 우선시하기도 한다.
Getter/Setter 및 메서드 명명 규칙
Go에서는 일반적으로 `getter`와 `setter` 메서드를 직접 생성하는 대신, 구조체 필드에 직접 접근하는 방식을 선호한다. 하지만, 비공개 필드에 접근하기 위해 `getter`와 `setter`를 사용해야 할 경우, `setter` 메서드 이름은 `Set` 접두사를 사용하고, `getter` 메서드에는 접두사를 붙이지 않는 것이 일반적이다. 또한, 메서드 리시버(Method Receiver)는 짧고 간결한 이름을 사용하는 것이 권장되며, 일관성을 유지해야 한다. 예를 들어, `Customer` 타입의 메서드에서는 `c` 또는 `cus`와 같은 간결한 이름(Concise Names)을 사용하는 것이 좋다.