본문 바로가기
프로그래밍

👨‍💻 [Go] Go 에서 모듈과 패키지의 이름을 짓는 규칙은 어떻게 되나요?

by 밝음의기둥 2025. 1. 15.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

Go 에서 모듈과 패키지의 이름을 짓는 규칙은 어떻게 되는지 간략히 알아보았습니다.


질문 >

Go 에서 모듈과 패키지의 이름을 짓는 규칙은 어떻게 되나요?

답변 >

Go에서 모듈(Module)과 패키지(Package)의 이름을 짓는 규칙은 코드의 가독성을 높이고 협업을 원활하게 하며, 충돌을 방지하기 위해 중요한 역할을 합니다. 아래는 모듈과 패키지의 이름을 짓는 규칙과 모범 사례를 정리한 내용입니다.


1. 모듈 이름 규칙

1.1. 기본 규칙

  • 모듈 이름은 소스 저장소의 경로를 기반으로 지정합니다.
  • 일반적으로 전체 URL을 포함합니다.
    • 예: github.com/username/projectname

1.2. 모듈 이름의 형식

  • 소문자로 작성하며, 띄어쓰기는 사용하지 않습니다.
  • 숫자와 영문자, 슬래시(/)만 허용됩니다.
  • URL 형식이기 때문에 ., ``, _을 포함할 수 있습니다.

1.3. 모범 사례

  • 소스 저장소와 일치하는 이름을 사용합니다.
  • 모듈 이름은 프로젝트를 고유하게 식별해야 하므로 네임스페이스(예: 도메인 이름)를 포함합니다.

예시

  • 개인 프로젝트: github.com/johndoe/myapp
  • 조직 프로젝트: github.com/orgname/utils
  • 사설 저장소: gitlab.com/company/private-repo

2. 패키지 이름 규칙

2.1. 기본 규칙

  • 패키지 이름은 해당 패키지의 목적과 역할을 설명할 수 있어야 합니다.
  • 소문자로 작성하며, 짧고 간결하게 만듭니다.
  • 패키지 이름과 디렉토리 이름은 동일해야 합니다.

2.2. 패키지 이름의 형식

  • 단일 단어로 작성하는 것이 일반적입니다.
    • 예: math, strings, http
  • 의미 있는 이름을 사용하며, 일반적이고 모호한 이름(예: util, common)은 피합니다.
  • 이름은 복수형 대신 단수형을 사용합니다.
    • 올바름: user, product
    • 잘못된 예: users, products

2.3. 충돌 방지

  • 프로젝트 내에서 서로 다른 패키지 이름이 겹치지 않도록 유의합니다.
  • 패키지를 임포트할 때의 사용성을 고려합니다.
    • 너무 길거나 복잡한 이름을 피하세요.

예시

// 잘 설계된 패키지 이름
package auth  // 인증 관련 기능을 제공
package math  // 수학 계산 관련 기능 제공
package config // 설정 관련 기능 제공


3. 모듈 및 패키지 이름의 관계

  • 모듈 이름은 전체 프로젝트를 나타내며, 패키지 이름은 모듈의 하위 단위를 나타냅니다.
  • 패키지 경로는 모듈 이름과 디렉토리 구조를 합친 형태입니다.

예시

모듈 이름: github.com/johndoe/myapp
패키지 경로: github.com/johndoe/myapp/pkg/auth


4. 모듈 및 패키지 이름 설정 시 주의사항

4.1. 네이밍 충돌 방지

  • 공개적으로 사용될 모듈의 경우, 고유한 이름을 사용하세요.
  • 개인 도메인이나 조직의 네임스페이스를 포함하여 충돌을 방지할 수 있습니다.

4.2. 예약어 피하기

  • Go 언어의 예약어와 동일한 이름을 사용하지 마세요.
    • 예: package main, package import (잘못된 사용)

4.3. 간결하고 명확한 이름

  • 과도하게 축약하지 마세요. 이름은 패키지의 역할을 쉽게 이해할 수 있어야 합니다.

좋은 예시

package database // 명확한 의미 전달
package parser   // 명확한 역할 설명

나쁜 예시

package db   // 너무 축약됨
package prsr // 읽기 어렵고 모호함

4.4. 언어 종속성 피하기

  • 패키지 이름에 특정 언어의 접미사(예: mypackagego 또는 mypackagejava)를 사용하지 마세요.

5. 이름을 짓는 도구

  • Go는 코드의 가독성과 일관성을 유지하기 위해 Linting 도구를 제공합니다.
    • golangci-lint: 코드 검사 및 네이밍 규칙 확인.
    • go fmt: 코드 포맷을 자동으로 정리.

6. 모듈 및 패키지 이름의 예시

모듈 이름

  • github.com/username/projectname
  • gitlab.com/company/tools
  • example.com/myproject

패키지 이름

projectname/
├── cmd/          # 실행 가능한 애플리케이션
│   └── app/
├── pkg/          # 주요 패키지
│   ├── auth/     # 인증 관련 기능
│   ├── config/   # 설정 관련 기능
│   └── database/ # 데이터베이스 관련 기능
└── internal/     # 내부 사용 패키지
    └── utils/    # 유틸리티 함수


7. 결론

Go에서 모듈과 패키지 이름은 간결하고 명확하며, 목적에 맞게 설명할 수 있어야 합니다. 이를 통해 협업 시 코드의 가독성을 높이고, 모듈 및 패키지 충돌을 방지할 수 있습니다. Go의 권장 규칙과 모범 사례를 따르면 안정적이고 유지보수하기 쉬운 프로젝트를 구성할 수 있습니다.



🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형