Jakiej konwencji nazewnictwa pakietów używasz w projektach osobistych / hobbystycznych w Javie?

143

Znam już standardową konwencję nazewnictwa pakietów Java polegającą na użyciu nazwy domeny do tworzenia unikalnej nazwy pakietu (tj. Pakietu com.stackoverflow.widgets). Jednak nigdy nie widziałem żadnych zaleceń dotyczących wybierania nazw pakietów dla projektów osobistych. Zakładam, ponieważ dzieje się tak, ponieważ jest to naprawdę kwestia osobistego gustu.

Jak więc wybrać nazwy pakietów dla projektów osobistych, które nigdy nie trafią do produkcji (w wolnym czasie możesz eksperymentować z nowym frameworkiem). Zakładając, że nie masz osobistej witryny internetowej, której domeny możesz użyć do stworzenia struktury pakietu, co robisz (lub chciałbyś) zrobić? Czy masz logiczny system do generowania nowych nazw pakietów dla projektów hobbystycznych, czy po prostu używasz prostych, jednorazowych nazw pakietów, takich jak mypackage?

Ponieważ jestem po prostu ciekawy, jakie są opinie różnych ludzi na ten temat, stworzyłem tę wiki społeczności.

Osobiście nigdy się nad tym nie zastanawiałem, ale chciałem dziś wieczorem pobawić się Wicketem i przyszło mi do głowy, że nie mam jasnego pojęcia, jak chcę organizować moje hobby. Oddzielna, odrębna konwencja nazewnictwa pakietów dla projektów hobbystycznych (przynajmniej moim zdaniem) byłaby dobrym sposobem na wyraźne oddzielenie kodu osobistego i związanego z pracą.

Myślałem o prostej hierarchicznej konwencji nazewnictwa, aby zachować źródło moich osobistych projektów w jednym folderze głównym:

  • Użyj myprojectsjako folderu głównego
  • Dołącz nazwę projektu
  • Dodaj dodatkowe nazwy podpakietów

Tak więc mój projekt Wicket byłby w pakiecie, myprojects.learningwicketa testy jednostkowe byłyby w pakiecie myprojects.learningwicket.tests(na przykład).

Mike Spross
źródło
1
Powszechne, zdobądź osobistą domenę (imię- nazwisko-nazwisko.net) i użyj jej jako nazwy pakietu. Celem pakietu jest bycie unikalnym w skali światowej, więc moje projekty tak naprawdę go nie spełniają.
Vladimir Dyuzhev
5
Korzystanie z domeny .onion jest również opcją (podobną onion.duskgytldkxiuqc6.packagename). Dopóki klucz prywatny pozostaje tajny, masz kontrolę nad nazwą domeny. Rejestracja (generowanie) jest więc bezpłatna i jest trwała (w przeciwieństwie do tradycyjnych domen). Jest zgodny z literą konwencji Java i jednoznacznie identyfikuje użytkownika.
sastanin
14
Zawsze możesz utworzyć konto GitHub i użyć nazwy io.github.username. *.
Bardi Harborow
2
@BardiHarborow dzięki, skorzystałem z twojej sugestii.
Nick Volynkin
3
@GabrielBB, GitHub Pages umożliwia hostowanie witryn HTML i Jekyll pod adresem nazwa_użytkownika.github.io, a zatem subdomeny github.io są bardziej „gwarantowane”, że będą odpowiadać użytkownikom GitHub niż subdomeny github.com (które mogą być używane do wewnętrznych Projekty GitHub w dowolnym momencie).
Bardi Harborow

Odpowiedzi:

49

Jeśli robisz tylko osobiste projekty, w których nikt inny nie będzie używał kodu, możesz wymyślić nazwę pakietu, którą lubisz. Nie twórz jednak czegoś, co zaczyna się od com.lub net.lub innej domeny najwyższego poziomu, ponieważ sugerowałoby to, że jesteś właścicielem nazwy domeny (tj. Używanie com.johnjako nazwy pakietu tylko dlatego, że tak się składa, że ​​imię John nie jest dobrym pomysłem) .

Jeśli zamierzasz przekazać kod komuś innemu, powinieneś użyć globalnie unikalnej nazwy pakietu, co zgodnie z konwencjami Java oznacza, że ​​powinieneś zarejestrować i używać nazwy domeny.

Greg Hewgill
źródło
1
Więc jeśli chcę zaadresować nazwę pakietu, com.xyzczy ta nazwa pakietu powinna być gdzieś zarejestrowana? PS xyzjest moim klientem.
Prasad
9
Zastanawiam się, czy mogę użyć mojego identyfikatora github dla tej i domeny github? Np. com.github.mygithubid.myproject?
Kirill G.
2
@KirillG. Odradzałbym to, ponieważ identyfikatory GitHub można zmienić w dowolnym momencie, dowolną liczbę razy. To prawda, każda domena może się zmienić, ale nie tak łatwo lub często (i tak zwykle nie). Chociaż myślę, że jest to w porządku w przypadku projektów hobbystycznych.
sara
26

Po prostu używam moich inicjałów: fg.nameofproject.etc

Zmniejsza pisanie. W dowolnym momencie można dodać przedrostek sf.net lub com. lub org. lub com.google ..

Ponieważ projekt jest osobisty, traktuj go wyjątkowo, podobnie jak świeżo wyprasowaną spersonalizowaną koszulkę na prezent - będzie dobrze.

Florin
źródło
42
bond.james.007
Kliknij „Za głosowaniem”
19
@kliknij zgodnie z wytycznymi, które byłyby bond.james._007- nie mają tego samego pierścienia ...: - {
corsiKa
20
pmurray_at_bigpond_dot_com.project.package
paulmurray
źródło
2
+1. Sprytny. Dzięki temu otrzymasz unikalną nazwę pakietu i od razu zidentyfikujesz autora.
Mike Spross
19

<sarcasm>Bah. Każdy szanujący się programista miałby własną nazwę domeny. To jest oczywiście podchwytliwe pytanie. Każdy ma własną nazwę domeny! </sarcasm>:-)

Ok, z całą powagą, kupowanie niestandardowej nazwy domeny jest prawdopodobnie najłatwiejszą opcją. Za około 10 USD rocznie możesz znaleźć renomowanych dostawców, którzy będą hostować domenę i przekazywać pocztę e-mail.

James Schek
źródło
18
O dziwo, zwiększy to również twoją pewność siebie.
jamesh
26
Dobra odpowiedź, ale początkujący programista prawdopodobnie nie chce kupować strony internetowej tylko po to, by śledzić stronę z samouczkiem lub filmikiem o tym, jak stworzyć GUI z przyciskiem zamykania.
Jochem Kuijpers
17

Przechowywać większość moich projektów hobby w Google Code, więc po prostu korzystać z witryny projektu jako nazwy pakietu: com.googlecode.donkirkby.someproject.

Don Kirkby
źródło
8
Jak mogliśmy być ślepi, aby nie widzieć szaleństwa naszych działań ?!
Joey Sabey
1
Tęsknisz za Google Code, @Joey? Przez ostatnie kilka lat korzystałem głównie z GitHub , więc musiałem tylko przenieść kilka moich starych projektów z Google Code, zanim się zamkną.
Don Kirkby
Więc czy zmieniłeś nazwy pakietów, zachowałeś nazwy kodów googlecode, czy ...?
serv-inc
1
Nie używałem żadnego starego kodu, odkąd go przeniosłem, @ serv-inc. Każda opcja zadziała.
Don Kirkby
3

nazywam się anjan

zwykle używam com.anjan

Mam własną firmę fantasy - czasami z niej korzystam

tradycja ze sourceforge (jak pokazała hibernacja i inne pakiety) to net.sf. *

więc, w zależności od nastroju, możesz to zrobić.

anjanb
źródło
13
Chyba że jesteś również właścicielem anjan.com , myślę, że robiąc to bardzo się mylisz.
Fredrik
7
@Fredrick na szczęście wygląda na to, że anjan.com w najbliższym czasie nie wyda żadnych bibliotek.
corsiKa
1
@corsiKa: masz rację, dopóki niczego nie wydam, nic mi nie jest. :-)
anjanb
3
@anjanb Cóż, poszedłem na ich stronę internetową. Robią karmę dla zwierząt. Nie jestem ekspertem, ale większość firm produkujących karmę dla zwierząt domowych nie wydaje wielu bibliotek oprogramowania =)
corsiKa
3

Myślę, że masz to opracowane. Pokusa, której należy unikać, to w ogóle nie zawracać sobie głowy nazwą pakietu. Łatwo jest zapisać kilka naciśnięć klawiszy, ponieważ „Piszę tylko kod testowy”. Ale potem kod staje się dobry, użyteczny i duży, a potem zdajesz sobie sprawę, że masz solidny początek dla czegoś, co może być biblioteką lub aplikacją o długiej żywotności. Może nie jest to biblioteka ani aplikacja, która kiedykolwiek opuści Twoją sieć domową, ale chodzi o to, że nie myślisz z wyprzedzeniem. To duch informatyki w Danii - zawsze myśl z wyprzedzeniem, choćby odrobinę.

Konwencja nazewnictwa, której używam w moim kodzie hobbystycznym, jest bardzo podobna do twojej. Mam katalog najwyższego poziomu o nazwie „futura” (długie, nudne powody, dla których pojawiła się ta nazwa), z którego wisi cały mój kod. Próbuję zorganizować swój kod w biblioteki pakietów, nawet jeśli może to być klasa lub pakiet, których nigdy nie używam w innym projekcie. Wszystkie aplikacje (czyli wszystko, co ma void main (String [] args) w klasie) umieszczam w folderze futura.app. *. Staram się również naśladować nazwy standardowych pakietów bibliotek Javy dla własnego kodu, chociaż w kilku przypadkach złamałem konwencję z powodu własnych upodobań (np. Futura.inet dla Internetu, a nie tylko gniazdo, kod i kolekcje futura. -util rzeczy.) Parafrazując Davida Mameta: Zawsze uogólniaj. Zawsze uogólniaj!

Z uwagi na to, że zadałeś to pytanie, podejrzewam, że zgadzasz się również z moją ostatnią uwagą: nie musisz traktować hakowania hobbystów jako projektu na poziomie przedsiębiorstwa, ale jeśli wprowadzisz część tej dyscypliny do gry domowej, hobby jest tym bardziej satysfakcjonujące.

Jim Nelson
źródło
2

Używam adresu URL OpenID, a następnie dołączam nazwę projektu. na przykład com.myopenid.cd1.twitterjest to pakiet główny klienta Twittera, który opracowałem.

cd1
źródło
Podobało mi się to, ale potem zdałem sobie sprawę, że już go nie ma. :( janrain.com/myopenid-service-ends "Od 1 lutego 2014 r. usługa MyOpenID została wyłączona."
sukces
2

Moja nazewnictwa: prj.project_name.

Amir Saniyan
źródło
1

Po prostu używam swojego imienia: nazwisko.initials.xxx, jako miłego połączenia między zwięzłością a unikaniem kolizji. Pomyślałem, że dałoby to rozsądną przestrzeń nazw wolną od kolizji, gdybym kiedykolwiek zdecydował się na publiczne opublikowanie kodu. Mam też mały program, który napisałem, który może przepakować całe drzewa katalogów, więc pomyślałem, że jeśli kiedykolwiek będę musiał przepakować do publikacji, jest to dość bezbolesne ... dlatego nie traciłem zbyt wiele snu nad tym.

Po nazwie sename.initials.xxx używam aplikacji do pakietów aplikacji, lib do pakietów bibliotek i tst do rzeczy, z którymi eksperymentuję.

Lawrence Dol
źródło
1

co myślisz o lastname.firstname.project ??? jak luz.marlon.project?

Marlon
źródło
16
To może zadziałać w twoim przypadku, ale John Smith i Bob Jones mogą napotkać konflikty, gdy chcą kiedyś opublikować swój kod.
Bill the Lizard
0

Myślałem o zadaniu tego samego pytania. Do tej pory użyłem przedrostka com.tehvan, mimo że tak naprawdę nie mam firmy.

tehvan
źródło