[java] Java 패키지 이름에서 단어 구분 기호에 대한 규칙은 무엇입니까?
패키지 이름에서 단어를 어떻게 분리해야합니까? 다음 중 올바른 것은 무엇입니까?
com.stackoverflow.my_package
(밑줄)com.stackoverflow.my-package
(하이픈)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.deepSpace
나com.example.deep_space
.
답변
누구나 밑줄을 사용할 수 있습니다 _ (괜찮습니다)
아무도 하이펜을 사용해서는 안됩니다 – (나쁜 연습)
패키지 이름 안에 대문자를 사용해서는 안됩니다 (잘못된 방법)
참고 : 여기서 “나쁜 습관”은 기술적으로 사용하기위한 것이지만 일반적으로 쓰기에는 좋지 않습니다.
답변
공식 명명 규칙은 엄격하지 않으며 접두사를 제외하고 낙타 표기법을 ‘금지’하지 않습니다 ( com
예제에서).
그러나 나는 개인적으로 대문자 와 하이픈 , 심지어 숫자를 피할 것 입니다. 나는 com.stackoverflow.mypackage
Bragboy가 제안한 것처럼 선택할 것입니다.
(하이픈 ‘-‘은 패키지 이름에서 유효하지 않습니다)
편집하다
흥미 롭습니다. 언어 사양에는 명명 규칙에 대해서도 언급 할 내용이 있습니다.
에서 장 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 이름 선언 참조