Wpis z mikrobloga

Ile method powinno mieć repozytorium? Zazwyczaj takie crudowe repo ma przynajmniej 4 metody typu getById, add, delete itd. Tylko jaki to ma sens i czy to czasem nie łamie single responsibility principle? Załóżmy, że mam jakiś command, np. CreateTaskCommand, CommandHandler przyjmuje tego commanda, następuje walidacja i jeśli jest pomyślna, to task jest zapisywany do repo i teraz pytanie po co taki handler ma mieć wstrzyknięte wielkie repo z 5 innymi niepotrzebnymi metodami jak potrzebuje tylko metody add? W myśl CQRS można podzielić repo na query (readAll, readBy...) i command (add, update delete), ale nadal wtedy mamy spore klasy.
#naukaprogramowania #programowanie
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Edelner: takie repozytoria to najszybciej rosnące klasy. Lepiej rozbijać to sobie na osobne klasy query, które implementują interfejsy. Wtedy w takim Twoim commandzie wstrzykujesz interfejs, a nie konkretną klasę. Eleganckie rozwiązanie, które jest potem łatwe w utrzymaniu.
  • Odpowiedz
@Edelner SRP To jedna z mniej jasnych zasad OOP bo jest rozumiana subiektywnie - bo co to znaczy "jedna odpowiedzialność"? bo jak powiemy że repozytorium "zapisuje, odczytuje i usuwa encje/modele" to coś jest nie tak ale już "repozytorium zarządza modelami" brzmi w ramach tej zasady git. R. C. Martin jako twórca terminu wyjaśnia że chodzi w niej o to że powinien istnieć "jeden powód do zmiany" - https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html
  • Odpowiedz