Najlepsze praktyki SPRING [prima aprilis]

1

Oto wypracowane przez lata i zebrane najlepsze praktyki w springu:

  1. użyj conajmniej 2-3 adnotacji nad metodą/klasą, jeśli tak nie wiedz że coś robisz nie tak
  2. field injection - to jeden z najlepszych sposóbów na uniknięcie konstruktorów na 30 parametrów. Wstrzyknij i działaj. Da się to łatwo przetestować dzięki refleksji - bądź pragmatyczny nie słuchaj purystów.
  3. jeśli martwi cię zbyt duża ilość wstrzykniętych obiektów jest na to sposób! Wystarczy wstrzyknąć ApplicationContext i użyć metody getBean() tam gdzie jej potrzebujesz.
  4. warstwowa struktura, porty i adaptery - to przeżytek. Wstrzykuj repozytoria w controllerach, zaoszczędzisz cykle procesora, a kod będzie prostszy - w końcu robisz wszystko tam gdzie tego potrzebujesz.
  5. walidacja i obsługa wyjątków powinna zostać przekazana do @ExceptionHandlerów : stwórz jeden generyczny exception handler i parsuj exceptiony na zwrotki o błędach - to takie proste!
  6. Jeśli w twoich konstruktorach dużo się dzieje, stwórz dodatkową metodę i opatrz ją adnotacją @PostConstruct - wtedy wszystko się stanie tuż po utworzeniu obiektu, a twój konstruktor będzie przejrzysty

UWAGA: To nie jest ASZdziennik, ale myślę że mógłby nim być.

1
  • Jeśli męczy Cię przekazywanie parametrów między warstwami użyj RequestScope, JobScope,
  • nie będziesz miał problemu z testowaniem jeśli zamiast klas przetestujesz mocki,
0

warstwowa struktura, porty i adaptery - to przeżytek. Wstrzykuj repozytoria w controllerach, zaoszczędzisz cykle procesora, a kod będzie prostszy - w końcu robisz wszystko tam gdzie tego potrzebujesz.

To akurat jest bardziej złozone. Jesli mamy prostego CRUDA to nie ma sensu robić portów adapterów czy jakis innych warstw pośrednich. Nie ma sensu strzelac z armaty do muchy :)

0
scibi92 napisał(a):

To akurat jest bardziej złozone. Jesli mamy prostego CRUDA to nie ma sensu robić portów adapterów czy jakis innych warstw pośrednich. Nie ma sensu strzelac z armaty do muchy :)

Są takie projekty? Z tego co widze do tej pory to te "proste CRUDY" to tylko i wyłącznie apki przepisywane z tutoriala do CV. Każdy komercyjny projekt, z którym się spotkałem to coś więcej niż prosty CRUD i dobrze zorganizowana architektura jest lub powinna być jego częścią :)

0
  • Nie musisz się męczyć z circular-reference, wystarczy, że wszystkie zależności będą @Lazy
0
baant napisał(a):
scibi92 napisał(a):

To akurat jest bardziej złozone. Jesli mamy prostego CRUDA to nie ma sensu robić portów adapterów czy jakis innych warstw pośrednich. Nie ma sensu strzelac z armaty do muchy :)

Są takie projekty? Z tego co widze do tej pory to te "proste CRUDY" to tylko i wyłącznie apki przepisywane z tutoriala do CV. Każdy komercyjny projekt, z którym się spotkałem to coś więcej niż prosty CRUD i dobrze zorganizowana architektura jest lub powinna być jego częścią :)

No w projektach komercyjnych jakaś logika na ogół jest, ale odnosiłem sie do programowania ogólnie.

0

Nie zauważyłem od razu tagu, i po przeczytaniu punktu nr 1 zacząłem się zastanawiać, jakim cudem zawsze robiłem odwrotnie i dlaczego niby to jest źle...

0

Prima-aprillis swoją drogą, ale to może być bardzo mylące dla nieuważnych czytelników.

0

Ja widze że ludzie robia uproszczenia i skoro widzą zły kod napisany z użyciem Springa od razu stwierdzają że to Spring jest zły. g**no mozna pisac tak samo w "normalnej" Javie...

1
scibi92 napisał(a):

Ja widze że ludzie robia uproszczenia i skoro widzą zły kod napisany z użyciem Springa od razu stwierdzają że to Spring jest zły. g**no mozna pisac tak samo w "normalnej" Javie...

Jaki z tego wniosek?

2

@jarekr000000: wniosek jest taki że ch*jowy napisze równiez słaby programista w Scalii bez frameworków IoC. W Springu jest tego dużo widac po Spring jest popularny, a inne języki czy technologie mogą byc wybrane przez bardziej "świadome" jednostki, stad moze być więcej słabego kodu napisanego w Springu(bo tu jest dużo więcej przeciętnych średnio)

0

Zgadzam się.
Nawiasem mówiąc jutro postaram się zmienić tytuł wątku żeby nie mylił

0

Co do tych najlepszych praktyk to dziś widziałem prawie wszystkie (znowu przejmuję czyjś kod).
Prawie wszystkie, bo nie było zwyczajowego testowania mockito.
Testy były odpalane na prawdziwej bazie. Produkcyjnej. To podobno wyjaśniało dlaczego nie przechodzą. Jakiś niekumaty użytkownik zmienił sobie ustawienia.

0

Jak inaczej zwracać rzucać i obsługiwać wyjątki bez korzystania z ExceptionHandler? Pytam bo nie jestem mocno into spring

3

@ewazdomu: nie rzucać wyjątków o byle pierdnięcie ( ͡° ͜ʖ ͡°)

0

ja mam jedno pytanie, bo nie mogę teraz edytować wątku :O Jak to zrobić? Ewentualnie może niech jakiś litościwy moderator przeniesie do offtopa ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1