Często, szczególnie w bibliotekach, pakiety zawierają klasy zorganizowane wokół jednej koncepcji. Przykłady: xml, sql, user, config, db . Myślę, że wszyscy czujemy się całkiem naturalnie, że te pakiety są poprawne w liczbie pojedynczej .
com.myproject. xml .Element
com.myproject. sql .Connection
com.myproject. user .User
com.myproject. użytkownik .UserFactory
Jeśli jednak mam pakiet, który zawiera zbiór implementacji jednego typu - takich jak zadania, reguły, moduły obsługi, modele itp. , Co jest lepsze?
com.myproject. zadania .TakeOutGarbageTask
com.myproject. zadania .DoTheDishesTask
com.myproject. zadania .PaintTheHouseTask
lub
com.myproject. zadanie .TakeOutGarbageTask
com.myproject. zadanie .DoTheDishesTask
com.myproject. zadanie .PaintTheHouseTask
źródło
Odpowiedzi:
Liczba mnoga służy do opakowań o jednorodnej zawartości, a liczba pojedyncza do opakowań o niejednorodnej zawartości.
Klasa jest podobna do relacji z bazą danych. Relację bazy danych należy nazwać liczbą pojedynczą, ponieważ jej rekordy są uważane za instancje relacji. Funkcja relacji polega na utworzeniu złożonego rekordu z prostych danych.
Z drugiej strony pakiet nie jest abstrakcją danych. Pomaga w organizacji kodu i rozwiązywaniu konfliktów nazw. Jeśli pakiet jest wymieniony w liczbie pojedynczej, nie oznacza to, że każdy element pakietu jest instancją pakietu; zawiera powiązane, ale niejednorodne pojęcia. Jeśli jest wymieniony w liczbie mnogiej (jak często są ) Spodziewam się, że opakowanie zawiera jednorodne koncepcje.
Na przykład typ powinien zostać nazwany
TaskCollection
zamiastTasksCollection
, ponieważ jest to zbiór zawierający instancje aTask
. Nazwany pakietcom.myproject.task
nie oznacza, że każda zawarta klasa jest instancją zadania. Nie może byćTaskHandler
, ATaskFactory
itd pakiet o nazwiecom.myproject.tasks
jednak będzie zawierać różne typy, które są wszystkie zadania:TakeOutGarbageTask
,DoTheDishesTask
, itd.źródło
beans
jest liczbą mnogą, jednakjava.beans
zawiera wszelkiego rodzaju klasy związane z JavaBeans.java.beans
.To prawdopodobnie zależy od konkretnego języka. W .NET (C #) zdecydowanie powinna być liczba mnoga, jeśli prawdopodobne jest kolizja nazwy typu przestrzeni nazw (
type name expected but namespace found
błąd). Poradziłem sobie z tym, nie jest to przyjemne i powoduje, że w całym kodzie występują zbyt wysokie nazwy typów. Przykład .źródło