[java컨벤션]Package명은 왜 소문자일까?에 관한 생각

신창호·2022년 11월 15일
0

코딩 컨벤션

(코드)컨벤션이란 읽고, 관리하기 쉬운 코드를 작성하기 위한 일종의 코딩 스타일 규약이다.
개발자간 통일된 규약이 없다면 코드의 의도를 파악하거나 오류를 찾는데 더 오랜 시간을 들이게된다.
그래서 각 언어나 개발 환경별로 컨벤션이 존재하는데
준수하면 가독성이 좋아지고, 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소를 줄여주고 성능에 영향 유지보수 비용을 줄이는 데 도움이 된다.

의문점

  • 그런 의문이 들때가 있다. 분명 유명한 컨벤션들은 이에 마땅한 이유가 있겠지만, 필수는 아니다.

  • 그렇기에 이 방식이 아닌 다른 방식으로 해도 괜찮지않을까? 라는 의문이 들때가 있다.

  • 예를 들어 java 프로젝트를 만들고 Package를 나누는 과정에서 Package명은 대소문자 둘다 가능하다.

    • 하지만, 클래스명과 쉽게 구분하기 위해서 소문자로 하는 것을 원칙으로 한다고 한다.
    • 또한, Package명은 한단어로만 구성되어 있어야한다.
    • 위처럼, Package명은 소문자, Class명은 대문자 시작으로 하지만 실질적으로 Package명이 대문자여도 구분하기 어렵진 않을 것이다.


의문점 해결

1. Package Naming은 소문자

  • 하지만, 이 의문점은 내가 경험이 부족해서 나오는 의문점이었다.

  • 로컬 환경에서 IDE인 IntelliJ로 편하게 프로젝트를 보았기때문에, Package명이 대문자든 소문자든 크게 상관없이 알아서 구분되었기 때문이다.

  • 하지만, 실제 서비스를 운행하는 서버, 배포서버가 리눅스 운영체제를 사용하고 CLI 환경이라고 하면 말이 달라진다.

    • 물론 CLI도 좋은 에디터로 인해, 가시적인 구분이 가능하겠끔 만들어 줄 수도 있지만 원래대로라면 검은색 배경에 하얀색 글자로만 이루어져있다.

    • 그렇기에, package명은 모두 소문자로 , Class명은 대문자로 시작하여 구분짓는다.


2. Package Naming은 한 단어 명사

  • Java는 표기법을 보통 카멜표기법을 사용하기 때문에 단어가 두개이상 겹쳐질경우 사용한다.

    • 카멜표기법 예시) reviewBoard , backgroundColor, typeName
  • 실제 현업에서 운영하는 서비스들은 도메인이라는 것이 있다.

    • 도메인은 크게 2가지로 나눠지는데,
      • 네임서버를 통한 IP 도메인과
      • 해결하고자 하는 문제 영역의 도메인이 있다.
    • 사실 이 둘의 뿌리는 결국 IP에 이름을 부여하는 것인데, 서비스규모가 커지고 프로젝트는 각 도메인별로 나눠지면서 범용적으로 쓰이고 있다.



  • 다시 돌아와서 Package도 도메인별로 나누는데, 사용하는 도메인과의 충돌 방지를 위해 패키지명은 보통 도메인 역순으로 한다.

    • (ex)
      • 도메인 : www.blog.naver.com/gloom
      • 패키지 : com.naver.blog
      • 잘못된 패키지 : com.naverBlog
  • 잘못된 패키지 예시처럼 두단어를 하나의 Package로 담게되면, 직관적일 수는 있으나, naver에 필요한 로직은 별도로 만들어야되기에

    • 확장성을 고려하고 확실한 기능 분리를 위해 한 단어 명사로 표현하는 것이다.

참고링크

profile
한단계씩 올라가는 개발자

0개의 댓글