2013-04-12 14 views
5

Jest kilka pytań na temat SO, które tak uderzają w to, ale jestem całkowicie nowy w rozwoju Javy i nie znam prawidłowego sposobu podejścia do tego.W języku Java, czy powinienem utworzyć nowy pakiet, folder lub folder źródłowy?

Mam rozwiązanie C#, zawierające dwa projekty (moja aplikacja i projekt testów jednostkowych) oraz w aplikacji, większość rzeczy jest umieszczana w folderach, np. Interfejsy, Wyjątki itp.

Próbuję odtworzyć to w Javie/Eclipse, ale nie wiem jak. Skończyło się na mnóstwie paczek, co brzmi naprawdę źle. Próbowałem również dodać folder źródłowy, ale w końcu był poza pakietem.

Czy ktoś może wskazać mi właściwy kierunek?

Mianowicie, które z nich powinienem użyć do reprezentowania mojego projektu testu jednostkowego/zestawu testów jednostkowych i podfolderów, które istnieją tylko do organizowania rzeczy.

Edytuj: Mówi też, że użycie domyślnego pakietu nie jest zalecane. Co powinienem robić?

Edytuj 2: Oto, jak to wygląda. Czy to wygląda nieco poprawne? Moje oryginalne rozwiązanie C# znajduje się po prawej stronie.

My Layout

+0

Nie ma nic złego w posiadaniu dużej liczby pakietów; jeśli te pakiety są sensowne. –

+0

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html na przykład – user1516873

Odpowiedz

2

W typowym projekcie zaćmienia Java, będziesz mieć jeden lub więcej folderów źródłowych (na przykład jeden dla kodu aplikacji, drugi dla testów jednostkowych).

Każdy folder zawiera drzewo pakietów, zwykle zaczynając od pakietu podstawowego, na przykład com.mycompany.myapp.

Aby uniknąć kolizji nazw, nazwy pakietów zwykle zaczynają się od nazwy domeny podmiotu, który jest autorem kodu, zaczynając od domeny najwyższego poziomu i przechodząc wstecz (bardziej ogólny lub bardziej szczegółowy). W ten sposób każda w pełni kwalifikowana nazwa klasy jest unikalna. Na przykład, jeśli google tworzy klasę o nazwie List, będzie ona znana jako com.google.List i nie wejdzie w konflikt z istniejącym interfejsem java.util.List.

Można mieć nieograniczoną liczbę paczek wewnątrz tego pakietu podstawowego, na przykład:

com.mycompany.myapp.persistence 
com.mycompany.myapp.domain 
com.mycompany.myapp.services 
com.mycompany.myapp.web 

Wszystko zależy od projektu i sposób chcesz zorganizować swój kod i swoich klas.

Na poziomie logicznym paczki są nazywane kropkami jako separator. Zawierają klasy Java.

Na poziomie fizycznym na dysku każdy pakiet jest katalogiem. Klasy języka Java znajdują się w plikach .java (najczęściej jedna klasa na plik).

W Eclipse "folder źródłowy" to folder wewnątrz twojego projektu, który jest znany z Eclipse i zawiera pliki źródłowe java. Zostanie skompilowany w wynikach (na przykład plik JAR) podczas budowania projektu.

W środowisku Eclipse zwykle przegląda się je na poziomie logicznym, wyświetlając pakiety. Kiedy powiesz Eclipse, aby "utworzył nowy pakiet", utworzy dla ciebie katalog. Na przykład, jeśli powiesz mu utworzenie pakietu com.mycompany.myproject, automatycznie utworzy on folder com zawierający folder mycompany zawierający folder myproject.

+0

Więc powinienem zrobić to, co zrobiłem powyżej, ale zagnieździć wszystkie moje paczki w początkowej paczce? – NibblyPig

+0

Tak, w zasadzie to. Klasy w twoim obecnym "domyślnym pakiecie" będą bezpośrednio w Twoim pakiecie bazowym projektu, a pozostałe pakiety będą w nim zagnieżdżone. Wybierz pakiet, który wskaże Twój projekt, a nie tylko Twój podmiot. Więc jeśli później utworzysz inne projekty, będą miały inny pakiet podstawowy. –

+0

Jak wspomniano, w wielu przypadkach wskazane jest używanie Mavena jako narzędzia do budowania. Maven pochodzi z domyślnymi strukturami projektów dla różnych typów projektów (są one nazywane archetypami), które oddzielają główne źródła, źródła testowe, zasoby i tak dalej. Są one zazwyczaj bardzo rozsądne, a otrzymujesz wiele innych korzyści, największych w zarządzaniu zależnością od IMHO (JAR). –

1

w Javie struktury drzewa źródłowego musi pasować struktury pakietu

tak foo.bar pakiet musi zostać określone w

src/foo/bar

także domyślny pakiet nie może być poinformowanym - ale nadal możesz go użyć - lepiej umieścić rzeczy w paczce jednak

+1

Zazwyczaj '/ src/foo/bar' oznacza, że ​​źródła znajdują się w'/src' a klasy pakietu 'foo.bar' znajdują się w folderze'/src/foo/bar' –

+1

Po prostu, jeśli znasz C#, możesz myśleć o pakietach od nazw w C#. Koncepcja jest dość podobna. – jnovacho

+0

@ Mark Rotteveel - dobrze nakrapiany - edytowany – gheese

0

W java inny rzut Struktura rozwoju przepływają zgodnie z rodzajem projektu. W związku z tym, że jesteś nowicjuszem w Javie i Eclipse, lepiej zainstalować wtyczkę maven i stworzyć projekt maven i wybrać archetypy zgodnie z typem projektu, takie jak autonomiczny lub oparty na sieci. Wtyczka maven utworzy strukturę projektu, w tym pakiety, folder źródłowy pakietów testowych itd. Więcej informacji o strukturze projektu można uzyskać pod adresem this

0

Użycie pakietu domyślnego może powodować kolizje przestrzeni nazw. Wyobraź sobie, że tworzysz bibliotekę, która zawiera klasę MyClass. Ktoś używa twojej biblioteki w swoim projekcie, a także ma klasę MyClass w swoim domyślnym pakiecie. Co powinien zrobić kompilator? Pakiety w Javie to w rzeczywistości przestrzeń nazw, która w pełni identyfikuje twój projekt. Dlatego ważne jest, aby nie używać pakietu domyślnego w projektach rzeczywistych.