Kilka uwag na wyrywki: to, co wytknąłbym w code review.
Przede wszystkim niekonsekwentne nazewnictwo. Np. dlaczego ProductRepositories
, skoro obiekt ewidentnie reprezentuje pojedyncze repozytorium?
Czemu jeden package jest nazwany w liczbie mnogiej - models
, a inny już w liczbie pojedynczej: controller
, mimo że też zawiera więcej niż jeden kontroler?
Czemu getProductByProductId
, a nie po prostu getProductById
? To się rozumie samo przez się jak dla mnie, że to musi być jego ID.
A jeśli już upieramy się przy "by product id", to zgodnie z tą logiką, dlaczego nie getProductsByProductCategory
, tylko raz tak, a raz tak? :)
Czym się różni pojęcie "find" od "get"? Gdy chcemy pobrać wszystkie produkty, używamy metody findAll
, ale gdy stosujemy jakieś kryterium (np. kategorię), wtedy nazwy metod zaczynają się od get
. Niby drobiazg, ale stosowanie synonimów w kodzie powoduje szum informacyjny.
Odwołanie do this.
są potrzebne, gdy zachodzi problem wieloznaczności - np. rozróżnienia między parametrem metody a polem klasy.
Tu np. nie ma jednak takiego problemu:
@Override
public List<Product> findAll() {
return this.productRepositories.findAll();
}
więc this
jest raczej zbędne.
To może wyglądać na czepiactwo, ale w dużych projektach te wszystkie niekonsekwencje i swoboda nazewnictwa nawarstwiają się, pomnożone dodatkowo przez liczbę osób, i powoli zjadają programistów.
Zaznaczam, że nie jestem Javowcem webowcem - jeśli coś z tego, co wytknąłem, jest akurat kwestią konwencji frameworka, to sorry.