Cześć.
Niedawno wyczytałem, że znacznie lepiej jest dzielić klasy na pakiety pod względem funkcjonalności, a nie warstw aplikacji. Wcześniej dzieliłem projekt po prostu na pakiety service, controller, config, model itd, a w dopiero w tych pakietach, rozdzielających projekt warstwowo, tworzyłem dokładniejszy podział.
Narzuca mi się do głowy kilka drobnych pytań doprecyzowujących mój tok myślenia:
- Czy obiekty encji powinienem trzymać jednak razem w jednym pakiecie?
- Czy warstwę kontrolerów też wrzucić do pakietu kontroler?
- Rozumiem, że podział na pakiety per funkcjonalność odbywa się głównie w warstwie serwisu, tj. miejscu, w którym realizowana jest logika biznesowa. Czy taki podział stosować w taki sposób, że w pakiecie znajdują się klasy odpowiedzialne za pewną funkcjonalność, obiekt domenowy, dto, jakaś fasada wystawiająca publiczny interfejs sklejony z tych klas itd? Co jednak, gdy kilka funkcjonalności wykorzystuje tą samą grupę obiektów? Jak zapobiec takiemu wymieszaniu wszystkiego? Boję się, że poprzez nieumiejętny podział zamienię siekierkę na kijek i wszystko mi się pomiesza.
Jak powinienem zrealizować taki podział?