Wpis z mikrobloga

Hej, pracuję już rok jako Python Webdev w FastAPI + prostsze zadania DevOpsowe i nigdy nie widziałem, żeby programiści których znam i z którymi pracowałem używali wzorców projektowych. Sam też nie specjalnie widzę powód dla którego miałbym ich używać. Zazwyczaj wygląda to tak, że gdy mam klepać CRUD-y to robię klasę UserQueryModule a w nim metody create, get, delete itd. Modele w pydantic podobnie.

Robię jakiś błąd lub może czegoś nie dostrzegam?

Przeglądam i czytam refactoring.guru i tak się zastanawiam kto w firmie, by w ogóle chciał przejąć kod po mnie, gdybym powymyślał i zaimplementował adaptery czy hexagony.

Jak to wygląda u was?

#programowanie taguje #programista15k dla zasięgu.
  • 9
@Ignac96: heksagonal/port-adapter czy np onion to nie klasyczne wzorce tylko architektura która jest raczej organizacją kodu, wyznaczeniem granic w warstwach i określaniem jak warstwy mogą się używać (można w sumie powiedzieć że to wzorce architektoniczne).
Jako ciekawostka clear architecture, heksagonal i onion to są w sumie te same wzorce tylko każdy kolejny precyzuje nieco dokładniej rzeczy i wyznacza dodatkowe obostrzenia względem poprzedniego.
CQRS czy DDD np to też wzorce architektoniczny ale
@Ignac96: nie wiem jak to w pythonie wygląda bo nie traktuje go poważnie do dużych komercyjnych projektów, ale to co opisałeś to prawdopodobnie wzorzec repository.
(Pytanie jak zaimplementowany).
Ogólnie wzorców jest ponad 20 a (może nieświadomie, albo nie poprawnie) używa się może z 4-7
Singleton (wielu odradza), Repository (dostęp do danych), adapter, fabryka, builder I migrator jeśli dobrze kojarzę nazwy to tak z tych popularniejszych.
O wzorzec Obserwator (jeśli się nie
@Ignac96: a no i pytanie czy piszecie w ogóle testy jednostkowe. Bo jak się wzorców nie używa to zwykle okazuje się że wiele klas jest później. Nietestowalnych
@Ignac96: wzorce opisują rzeczywistość a nie ją tworzą. Jest duża szansa, że osoba nie znająca wzorców napisze coś, co idealnie wpisuje się w opis jakiegoś wzorca

że gdy mam klepać CRUD-y to robię klasę UserQueryModule a w nim metody create, get, delete itd


@Ignac96: jak coś tworzy interfejs do zarządzania danymi, gdzie z interfejsu wyciętę są szczegóły implementacyjne to masz repozytorium