2008-10-09 4 views

답변

68

대회가 ​​왜 존재하는지 이해하고 나면 바보 같거나 어색하지 않아야합니다.

이 방식은 두 가지 중요한 일을한다 : 당신의 모든 코드가 충돌 할 다른 아무도 패키지에 포함되어

  • . 도메인 이름을 소유하고 있으므로 격리되어 있습니다. 이 대회가 없다면 많은 회사가 "StringUtil", "MessageUtil"등과 같은 클래스를 포함하는 "유틸리티"패키지를 갖게 될 것입니다. 다른 사람의 코드를 사용하려고 시도하면 이러한 충돌이 빠르게 발생합니다.

  • "반전"특성으로 인해 최상위 수준에서 클래스 - 디렉토리 레이아웃이 매우 좁습니다. jar 파일을 확장하면 "com", "org", "net"등의 dirs가 표시되고 각 조직/회사 이름 아래에 표시됩니다.

우리는 일반적으로 jar를 확장하지 않지만 초기 Java 개발에서는 사람들이 애플릿에 확장 된 dir 구조를 사용했기 때문에 이것이 중요했습니다.

그러나 이것은 소스 코드 디렉토리 구조가 매우 "하향식"느낌을 갖기 때문에 좋습니다. 가장 일반적인 (com, org, net ...)보다 덜 일반 (회사 이름)에서보다 구체적인 (프로젝트/제품/lib 이름)

+12

저는이 접근법이 너무 좋기 때문에 도메인 이름이 왜 그 순서인지 궁금합니다. 호스트의 경로는 general-> specific 경로로 이동하지만 subdomain.domain.tld 경로는 specific-> general 경로로 이동합니다. 불일치 ... 리팩터링을해야합니다 ... – rmeador

+0

프로그래밍이 인터넷 (www 폭발)보다 먼저 왔기 때문에 인터넷 URL 주소 지정 체계는 역 패키지/네임 스페이스 명명 체계 대신 사용되어야합니다. 부수적으로, 그 반대의 경우 : P. – RBT

18

실제로 역방향 도메인 이름 패키지 이름 지정이 Java의 더 우수한 규칙 중 하나라고 생각합니다.

1

예, 패키지의 시작 부분에는 역방향 도메인을 사용하고 나머지 관리 정보 (프로젝트, 부서 등)를 사용합니다. 도메인을 사용하면 공급 업체/회사/OSS 프로젝트 간의 충돌 가능성을 최소화 할 수 있습니다. 내 "데이터"패키지는 도메인 덕분에 다른 회사의 데이터 패키지와 충돌하지 않습니다.

본인은 내부 작업 또는 외부 사용을 목적으로하지 않는 클래스 (문서화되지 않은 지원 라이브러리 등)를 위해 tld를 삭제하는 규칙을 사용했습니다. 일반적으로 다른 개발자가 다른 규칙이나 정책을 코드 블록에 적용 할 수 있음을 분명히합니다.

역방향 도메인을 사용하면 규칙이나 설정된 패턴을 따르지 않는 임의의 네임 스페이스보다 훨씬 혼란 스럽습니다.

5

내부 프로젝트 일 뿐이며 코드를 재사용 할 가능성이 거의없는 경우 일반적으로 짧은 설명 이름을 사용합니다.

그러나 코드를 외부에서 사용하거나 다른 프로젝트에서 다시 사용하려면 역 도메인 스키마를 사용하는 경향이 있습니다. 패키지 이름 충돌이 발생하지 않도록합니다.

1

모든 프로젝트에서이 작업을 수행합니다. 네임 스페이스에 대한 .NET 응용 프로그램에도 적용되었습니다.

1

나는 꽤 바보 같다. com. 일부는 실제로 4 개의 추가 문자 만 추가합니다. 또한 어셈블리/프로젝트 이름에 회사 이름을 사용하는 것도 잘못된 것 같습니다. 나는 다른 회사와 합병되거나 단순히 회사 명을 변경 한 너무 많은 곳에서 일했습니다.

+0

에서 COM 부분은 패키지 이름이 고유 확인합니다 : 여기에 있습니다. 다른 회사는 .com, .net, .org 등 도메인을 소유하고있을 수 있습니다. –

+0

더하기 국가 코드 - au.com.blahblah ... – Andrew

1

예, 역 도메인 명명 규칙을 사용하여 JavaScript에서 네임 스페이스를 만드는 방법을 고안했습니다. 특정 어셋과 그 책임을 훨씬 쉽게 파악할 수 있으며 이름 충돌을 방지하는 데 도움이됩니다.

1

매우 유용하고 다른 사람들 (예 : XML 스키마) .

'큰'(WWW가 주어짐), 그러나 여러 부서 (즉, 작은 곳)에서 유용 할 수 있습니다. 소규모 프로젝트에서는 부풀어 오르는 것처럼 보일 수 있지만 보험처럼 행동합니다. 나중에 필요할 때가 있습니다.

4

나는 이것이 어떤 종류의 소프트웨어가 쓰여지고 있는지에 크게 의존한다고 생각합니다. 예를 들어, 나는 작은 회사를위한 내부 시스템을 개발, 그래서 선택 : sub 보통 client, commonserver 중 하나입니다

[company].[project].[sub].xyz(.abc) 

. 만약 내가 (상용) 소프트웨어 회사에서 일하고 있었다면, 나는 프로젝트가 시작할 때 호출 된 것과 그 작업이 끝났을 때 호출되는 것은 두 개의 완전히 별개의 것이기 때문에 project 비트를 사용하는 것을 훨씬 꺼려했다. 소지품!

oak.lang.Object 
+0

+1 오크! 좋은 사람, hehe ... –

관련 문제