Java의 개인 / 취미 프로젝트에 어떤 패키지 이름 지정 규칙을 사용합니까?


143

도메인 이름을 사용하여 고유 한 패키지 이름 (예 : package com.stackoverflow.widgets) 을 만드는 표준 Java 패키지 명명 규칙에 이미 익숙합니다 . 그러나 개인 프로젝트의 패키지 이름을 선택하는 방법에 대한 권장 사항은 본 적이 없습니다. 나는 이것이 개인적인 취향의 문제이기 때문이라고 생각합니다.

따라서 개인 프로젝트의 패키지 이름을 어떻게 선택하여 프로덕션으로 만들지 않습니까 (여가 시간에 새로운 프레임 워크를 실험 할 수 있음) 패키지 구조를 만드는 데 사용할 수있는 도메인을 가진 개인 웹 사이트가 없다고 가정하면 어떻게해야합니까? 취미 프로젝트를위한 새로운 패키지 이름을 생성 할 수있는 논리적 시스템이 mypackage있습니까? 아니면 간단한 폐기 패키지 이름을 사용 합니까?

나는 다른 사람들의 생각이 이것에 대해 궁금해하기 때문에 이것을 커뮤니티 위키로 만들었습니다.

개인적으로 저는 그다지 생각하지 않았지만 오늘 밤 Wicket 과 함께 놀고 싶었고 취미 프로젝트를 어떻게 조직하고 싶은지에 대한 명확한 아이디어가 없다는 것이 나에게 일어났습니다. 취미 프로젝트 (적어도 적어도 내 생각에는)에 대한 별도의 뚜렷한 패키지 명명 규칙은 개인 및 업무 관련 코드를 서로 명확하게 분리하는 좋은 방법으로 사용됩니다.

개인 프로젝트의 소스를 단일 루트 폴더에 유지하기 위해 간단한 계층 적 명명 규칙을 생각하고있었습니다.

  • 사용 myprojects루트 폴더로
  • 프로젝트 이름 추가
  • 추가 서브 패키지 이름 추가

따라서 Wicket 프로젝트는 패키지에 myprojects.learningwicket있고 단위 테스트는 패키지에 있습니다 myprojects.learningwicket.tests(예 :).


1
일반적으로 개인 도메인 (firstname-lastname.net)을 가져 와서 패키지 이름으로 사용하십시오. 패키지의 목적은 전 세계적으로 독특하기 때문에 내 프로젝트는 실제로 그것을 자르지 않습니다.
블라디미르 듀우 예프

5
.onion 도메인을 사용하는 것도 옵션입니다 (예 :)onion.duskgytldkxiuqc6.packagename . 개인 키가 비밀로 유지되는 한 도메인 이름을 제어 할 수 있습니다. 따라서 무료로 등록 (생성) 할 수 있으며 기존 도메인과 달리 영구적입니다. Java 규약을 준수하며 사용자를 고유하게 식별합니다.
sastanin

14
언제든지 GitHub 계정을 생성하고 io.github.username. *을 사용할 수 있습니다.
Bardi Harborow

2
@BardiHarborow 감사합니다, 나는 당신의 제안을 사용했습니다.
Nick Volynkin

3
@GabrielBB, GitHub Pages를 사용하면 yourusername.github.io에서 HTML 및 Jekyll 사이트를 호스팅 할 수 있으므로 github.io의 하위 도메인은 github.com의 하위 도메인보다 GitHub 사용자에게 더 "보증"됩니다 (내부 용으로 사용될 수 있음) GitHub는 언제든지 프로젝트합니다).
Bardi Harborow

답변:


49

다른 사람이 코드를 사용하지 않는 개인 프로젝트를 수행하는 경우 원하는 패키지 이름을 구성 할 수 있습니다. 로 시작하는 것이 무엇인가를하지 마십시오 com.또는 net.다른 최상위 도메인이 그 도메인 이름을 소유하고 있다는 것을 의미하기 때문,하지만 (예. 사용하여 com.john이름이 존 될 일해서 패키지 이름으로하는 것은 좋은 생각되지 않습니다) .

다른 사람에게 코드를 제공하려면 전역 적으로 고유 한 패키지 이름을 사용해야합니다. 이는 Java 규칙에 따라 도메인 이름을 등록하고 사용해야한다는 의미입니다.


1
따라서 패키지 이름을 지정 com.xyz하려면이 패키지 이름을 어딘가에 등록해야합니까 ?? PS xyz는 내 고객입니다.
Prasad

9
해당 github 도메인에 github ID를 사용할 수 있는지 궁금합니다. 예를 들어 com.github.mygithubid.myproject?
Kirill G.

2
@KirillG. GitHub ID는 언제든지 여러 번 변경할 수 있으므로 권장하지 않습니다. 물론 모든 도메인은 변경 될 수 있지만 쉽게 또는 자주 (일반적으로는 아님) 불가능합니다. 취미 프로젝트로는 괜찮을 것 같습니다.
sara

26

나는 단지 이니셜을 사용합니다 : fg.nameofproject.etc

타이핑이 줄어 듭니다. sf.net 또는 com으로 언제든지 접두어를 붙일 수 있습니다. 또는 조직. 또는 com.google ..

이 프로젝트는 개인적으로 취급되므로 갓 눌러 진 개인화 된 선물 셔츠처럼 특별합니다. 기분이 좋을 것입니다.


42
bond.james.007
Click Upvote

19
에 따라 @click 지침 이 될 것입니다 bond.james._007- ... 여기에 같은 반지를 가지고 있지 않습니다 - {
corsiKa

20
pmurray_at_bigpond_dot_com.project.package

2
+1. 영리한. 이렇게하면 고유 한 패키지 이름이 생성되고 작성자를 한 번에 식별 할 수 있습니다.
Mike Spross

19

<sarcasm>바. 자존심있는 프로그래머라면 누구나 자신의 도메인 이름을 가질 것입니다. 이것은 분명히 까다로운 질문입니다. 모두 자신의 개인 도메인 이름이 있습니다! </sarcasm>:-)

좋아, 사용자 정의 도메인 이름을 구입하는 것이 아마도 가장 쉬운 옵션 일 것입니다. 일년에 약 10 달러에 도메인을 호스팅하고 이메일을 전달하는 평판이 좋은 제공 업체를 찾을 수 있습니다.


18
이상하게도, 이것은 당신의 자신감을 높여 줄 것입니다.
jamesh

26
좋은 대답이지만 시작 프로그래머는 아마도 튜토리얼 웹 사이트 또는 비디오를 따라 닫기 버튼으로 GUI를 만드는 방법에 대한 웹 사이트를 구매하고 싶지 않을 것입니다.
Jochem Kuijpers

17

취미 프로젝트의 대부분을 Google 코드에 저장하므로 프로젝트 사이트를 패키지 이름으로 사용합니다 com.googlecode.donkirkby.someproject.


8
우리는 어떻게 행동의 어리 석음을 보지 못했을 수 있습니까?!
Joey Sabey

1
@Joey Google Code를 놓치셨습니까? 나는 지난 몇 년간 GitHub 를 주로 사용 했으므로 이전 프로젝트 중 일부를 종료하기 전에 Google 코드에서 이전해야했습니다.
Don Kirkby

패키지 이름을 바꾸거나 Google 코드 이름을 유지 했습니까? ...?
serv-inc

1
@ serv-inc로 옮긴 이래로 이전 코드를 사용하지 않았습니다. 어느 옵션이든 작동합니다.
Don Kirkby

3

내 이름은 안잔입니다

일반적으로 com.anjan을 사용합니다.

나는 내 자신의 판타지 회사를 가지고 있습니다.

sourceforge의 전통 (최대 절전 모드 및 기타 패키지 표시)은 net.sf. *

기분에 따라 갈 수 있습니다.


13
anjan.com 도 소유하지 않는 한 그렇게하는 것이 끔찍하다고 생각합니다.
Fredrik

7
@Fredrick은 다행히 anjan.com이 곧 라이브러리를 공개하지 않을 것 같습니다.
corsiKa

1
@ corsiKa : 당신이 옳습니다. 내가 아무것도 공개하지 않는 한 괜찮습니다. :-)
anjanb

3
@anjanb 글쎄, 나는 그들이 웹 사이트에 갔다. 그들은 애완 동물 먹이를합니다. 나는 전문가는 아니지만 대부분의 애완 동물 사료 회사는 많은 소프트웨어 라이브러리를 출시하지 않습니다 =)
corsiKa

3

나는 당신이 그것을 해결했다고 생각합니다. 여기서 피하려는 유혹은 패키지 이름을 전혀 신경 쓰지 않는 것입니다. "단지 테스트 코드를 작성하고 있기 때문에 몇 번의 키 입력을 쉽게 저장할 수 있습니다." 그러나 코드가 훌륭하고 유용하며 커지면 오래 지속되는 라이브러리 또는 응용 프로그램을 시작할 수 있습니다. 라이브러리 나 홈 네트워크를 떠나는 응용 프로그램이 아닐 수도 있지만 요점은 미리 생각하지 않은 것입니다. 이것이 덴마크 컴퓨터 과학의 유령입니다.

취미 코드에 사용하는 명명 규칙은 여러분과 매우 비슷합니다. 모든 코드가 중단되는 "futura"라는 이름의 최상위 디렉토리 (그 이름이 나온 지루한 이유)가 있습니다. 클래스 또는 패키지 일지라도 다른 프로젝트에 절대 사용하지 않더라도 코드를 패키지 라이브러리로 구성하려고 시도합니다. futura.app. * 폴더에 모든 응용 프로그램 (즉, 클래스에 void main (String [] args)이있는 것)을 배치합니다. 나는 또한 내 자신의 취향으로 인해 관례를 깨뜨 렸지만 내 자신의 코드에 대한 표준 Java 라이브러리 패키지 이름을 모방하려고 시도하지만 소켓, 코드 및 futura가 아닌 인터넷에 대한 futura.inet이 있습니다. -util stuff.) David Mamet의 말을 인용하려면 : 항상 일반화하십시오. 항상 일반화하십시오!

질문을 게시하는 데 사용한 관리에서 마지막 요점에도 동의하는 것 같습니다. 취미 해킹을 엔터프라이즈 수준의 프로젝트로 취급 할 필요는 없지만 해당 분야 중 일부를 홈 게임으로 가져 오면, 취미는 더 보람이 있습니다.


2

OpenID URL을 사용한 다음 프로젝트 이름을 추가합니다. 예를 들어, com.myopenid.cd1.twitter내가 개발 한 Twitter 클라이언트의 루트 패키지입니다.


나는 이것을 좋아했지만 더 이상 존재하지 않는다는 것을 깨달았다. :( janrain.com/myopenid-service-ends "2014 년 2 월 1 일 현재 MyOpenID 서비스가 해제되었습니다."
successhawk


1

나는 단지 이름과 surname.initials.xxx를 사용한다. 코드를 공개적으로 게시하기로 선택한 경우 합리적인 충돌없는 네임 스페이스를 제공 할 것이라고 생각했습니다. 또한 전체 디렉토리 트리를 다시 패키지 할 수있는 작은 프로그램이 있으므로 게시하기 위해 다시 패키지해야한다고 생각했습니다.

surname.initials.xxx 다음에는 응용 프로그램 패키지 용 앱, 라이브러리 패키지 용 lib 및 순수하게 실험중인 항목에 대해 tst를 사용합니다.


1

lastname.firstname.project에 대해 어떻게 생각하십니까? luz.marlon.project처럼?


16
John Smith와 Bob Jones가 언젠가 코드를 공개하려고 할 때 충돌이 발생할 수 있습니다.
Bill the Lizard

0

나는이 같은 질문을하는 것에 대해 생각했다. 지금까지 실제로 회사가 없지만 접두사 com.tehvan을 사용했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.