Podejście do pisania kodu w Go

0

Wiem, że można by było to dać do innego działu, ale jestem ciekaw stricte jak to wygląda/powinno wyglądać w Go. Piszę już komercyjnie do dość długo w tym języku. Spotkałem się z kilkoma podejściami jak powinno się pisać/trzymać kod. Najczęściej, to co ja widzę, to podejście MVC, albo DDD. Dodam, że większość projektów to "mikroserwisy". Jedno i drugie ma jakieś swoje plusy i minusy. Jak wygląda to u was w kodzie? Może macie jeszcze inne podejście? W jakich przypadkach używacie danego podejścia do pisania kodu?

2

Nie piszę w Go, ale czemu nie oba? MVC nie wyklucza DDD ani DDD nie wyklucza MVC. To są zupełnie inne części aplikacji, więc nie powinny ze sobą kolidować w najmniejszym stopniu.

2
  1. Uważam że Go to takie lepsze C, używanie go do innych projektów niż infra wywołuje u mnie napady agresji.
  2. MVC to sposób organizacji kodu programu w kontekście interfejsu użytkownika, DDD to sposób organizacji i pracy z kodem domeny. Oba wzorce są od siebie niezależne. Jest jeszcze Clean architecture i CQS i oczywiście architektura heksagonalna.

Ogólnie nowe projekty w Javie kierują się w stronę architektury heksagonalnej, z DDD jako metodą organizacji kodu w domenie.
UI jest zepchnięty na ubocze, i tam w odpowiednim adapterze np. REST endpoint można już stosować wzorzec MVC (Controller + DTOsy typu Request/Response).

Architektura jest zazwyczaj niezależna od języka. Ale w pewnych technologia istnieją frameworki które sporo rzeczy ułatwiają (słynny Spring Boot).

Wydaje mi się że w Go ludzie cenią prostotę, i raczej pisali by aplikacje korzystając z architektury warstwowej i mikroORM'ów. No ale to moja opinia.

Jeżeli znasz Javę to spróbuj popatrzeć na jakieś przykłady np. https://blog.allegro.tech/2020/05/hexagonal-architecture-by-example.html
Ale w Go też na pewno jest dużo artykułów na ten temat. Niestety te wszystkie wzorce trochę idą w poprzek tego z czego Go jest mocne, hyper wielowątkowości go routines everywhere...

0

No właśnie niby niezależne, ale potem widzę jedno, albo drugie. I jak ktoś stworzył projekt a'la MVC, to potem strasznie się złości jak chce przemycić coś z DDD. Mam wrażenie, że ludzie MVC/DDD sprowadzają do pewnego nazewnictwa i organizacji katalogów.

4

Jest jeszcze Clean architecture i CQS i oczywiście architektura heksagonalna.

A Clean Architecture to nie jest coś bardzo zbliżonego do heksagonalnej? Właściwie to heksagonalna jest podzbiorem Clean Architecture ?

Poza tym rzeczywiście Go to chyba nie język do aplikacji biznesowych...

1
0xmarcin napisał(a):
  1. Uważam że Go to takie lepsze C, używanie go do innych projektów niż infra wywołuje u mnie napady agresji.

Ja od prawie 5 lat piszę biznesowe aplikacje w Go i nie widzę powodu, abym miał z tym większe problemy. Bawi mnie stwierdzenie "nie znam się, ale się wypowiem".

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