(코드)컨벤션이란 읽고, 관리하기 쉬운 코드를 작성하기 위한 일종의 코딩 스타일 규약이다.
개발자간 통일된 규약이 없다면 코드의 의도를 파악하거나 오류를 찾는데 더 오랜 시간을 들이게된다.
그래서 각 언어나 개발 환경별로 컨벤션이 존재하는데
준수하면 가독성이 좋아지고, 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소를 줄여주고 성능에 영향 유지보수 비용을 줄이는 데 도움이 된다.
그런 의문이 들때가 있다. 분명 유명한 컨벤션들은 이에 마땅한 이유가 있겠지만, 필수는 아니다.
그렇기에 이 방식이 아닌 다른 방식으로 해도 괜찮지않을까? 라는 의문이 들때가 있다.
예를 들어 java 프로젝트를 만들고 Package를 나누는 과정에서 Package명은 대소문자 둘다 가능하다.
하지만, 이 의문점은 내가 경험이 부족해서 나오는 의문점이었다.
로컬 환경에서 IDE인 IntelliJ로 편하게 프로젝트를 보았기때문에, Package명이 대문자든 소문자든 크게 상관없이 알아서 구분되었기 때문이다.
하지만, 실제 서비스를 운행하는 서버, 배포서버가 리눅스 운영체제를 사용하고 CLI 환경이라고 하면 말이 달라진다.
물론 CLI도 좋은 에디터로 인해, 가시적인 구분이 가능하겠끔 만들어 줄 수도 있지만 원래대로라면 검은색 배경에 하얀색 글자로만 이루어져있다.
그렇기에, package명은 모두 소문자로 , Class명은 대문자로 시작하여 구분짓는다.
Java는 표기법을 보통 카멜표기법을 사용하기 때문에 단어가 두개이상 겹쳐질경우 사용한다.
실제 현업에서 운영하는 서비스들은 도메인
이라는 것이 있다.
다시 돌아와서 Package도 도메인별로 나누는데, 사용하는 도메인과의 충돌 방지를 위해 패키지명은 보통 도메인 역순으로 한다.
잘못된 패키지 예시처럼 두단어를 하나의 Package로 담게되면, 직관적일 수는 있으나, naver에 필요한 로직은 별도로 만들어야되기에