[java] Java 패키지 이름에서 단어 구분 기호에 대한 규칙은 무엇입니까?

패키지 이름에서 단어를 어떻게 분리해야합니까? 다음 중 올바른 것은 무엇입니까?

  1. com.stackoverflow.my_package (밑줄)
  2. com.stackoverflow.my-package (하이픈)
  3. com.stackoverflow.MyPackage (카멜 케이스)

일반적인 표준은 무엇입니까?



답변

공식 명명 규칙 문서에서 규정 한 내용은 다음과 같습니다.

패키지

독특한 패키지 이름의 접두어는 항상 모두 소문자 ASCII 문자로 작성하고 최상위 도메인 이름 중 하나 여야합니다, 현재 com, edu, gov, mil, net, org, 또는 국가를 식별하는 영어 두 문자 코드 중 하나가 ISO에 규정 된 표준 3166, 1981.

패키지 이름의 후속 구성 요소는 조직 자체의 내부 명명 규칙에 따라 다릅니다. 이러한 규칙은 특정 디렉토리 이름 구성 요소를 부서, 부서, 프로젝트, 기계 또는 로그인 이름으로 지정할 수 있습니다.

  • com.sun.eng
  • com.apple.quicktime.v2
  • edu.cmu.cs.bovik.cheese

참고 문헌


특히 최상위 도메인 접두사 다음에 나오는 내용은 위의 문서에서 지정하지 않았습니다. JLS는 또한 다음 예제를 제공함으로써 이에 동의합니다.

  • com.sun.sunsoft.DOE
  • gov.whitehouse.socks.mousefinder
  • com.JavaSoft.jag.Oak
  • org.npr.pledge.driver
  • uk.ac.city.rugby.game

다음 발췌문도 관련이 있습니다.

경우에 따라 인터넷 도메인 이름이 유효한 패키지 이름이 아닐 수 있습니다. 이러한 상황을 처리하기위한 몇 가지 제안 된 규칙은 다음과 같습니다.

  • 도메인 이름에 하이픈이나 식별자에 허용되지 않는 다른 특수 문자가 포함되어 있으면 밑줄로 변환하십시오.
  • 결과 패키지 이름 구성 요소 중 하나가 키워드 인 경우 밑줄을 추가하십시오.
  • 결과 패키지 이름 구성 요소 중 하나가 숫자로 시작하거나 식별자의 초기 문자로 허용되지 않는 다른 문자로 구성 요소 앞에 밑줄이 붙습니다.

참고 문헌


답변

세 가지 모두 규칙이 아닙니다.

사용하십시오 com.stackoverflow.mypackage.

패키지 이름은 낙타 케이싱, 밑줄 또는 하이픈 패키지 이름 지정 규칙을 따르지 않습니다 .

또한 Google Java 스타일 가이드 정확히 동일한 com.stackoverflow.mypackage규칙 ( )을 지정합니다 .

5.2.1 패키지 이름

패키지 이름은 모두 소문자이며 연속 단어는 단순히 함께 연결됩니다 (밑줄 없음). 예를 들어 com.example.deepspace, 하지 com.example.deepSpacecom.example.deep_space.

Google Java 스타일 가이드 : 5.2 식별자 유형별 규칙 : 5.2.1 패키지 이름 .


답변

누구나 밑줄을 사용할 수 있습니다 _ (괜찮습니다)

아무도 하이펜을 사용해서는 안됩니다 (나쁜 연습)

패키지 이름 안에 대문자를 사용해서는 안됩니다 (잘못된 방법)

참고 : 여기서 “나쁜 습관”은 기술적으로 사용하기위한 것이지만 일반적으로 쓰기에는 좋지 않습니다.

출처 : 패키지 이름 지정 (docs.oracle)


답변

공식 명명 규칙은 엄격하지 않으며 접두사를 제외하고 낙타 표기법을 ‘금지’하지 않습니다 ( com예제에서).

그러나 나는 개인적으로 대문자 와 하이픈 , 심지어 숫자를 피할 것 입니다. 나는 com.stackoverflow.mypackageBragboy가 제안한 것처럼 선택할 것입니다.

(하이픈 ‘-‘은 패키지 이름에서 유효하지 않습니다)

편집하다

흥미 롭습니다. 언어 사양에는 명명 규칙에 대해서도 언급 할 내용이 있습니다.

에서 장 7.7 고유 한 패키지 이름은 우리는 (낙타 표기법 표기가 확인 될 수 있도록) 대문자로 구성 패키지 이름과 예제를 참조하고 밑줄 ( “메리 – 루”-> “mary_lou”)에 의해 hyphonation를 교체하는 것이 좋습니다 접두사 자바 밑줄이있는 키워드 ( “com.example.enum”-> “com.example._enum”)

패키지 이름의 대문자에 대한 몇 가지 예는 6.8.1 패키지 이름 장에서 찾을 수 있습니다 .


답변

밑줄은 패키지 이름에서보기 흉하게 보입니다. 가치가있는 경우, 이름이 3 개 이상의 단어로 구성된 경우 이니셜 (예 :)을 사용 com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo하고에 패키지 목적을 문서화하십시오 package-info.java.


답변

패키지 이름에 단어를 연결하는 것은 대부분의 개발자가하지 않는 일입니다.

당신은 같은 것을 사용할 수 있습니다.

com.stackoverflow.mypackage

JLS 이름 선언 참조


답변