Wpis z mikrobloga

W jakim języku najlepiej nauczyć się zasad DDD, CleanArchitecture, oraz generalnie biznesowych praktyk jakości kodu?

Pracowałem zawodowo C++/Lua/Dart (6 lat w zawodzie), ale w żadnej z tych technologii nie mogę znaleźć szerszych źródeł na temat 'enterprise level' architektury i jasnych standardów programowania. Z książek w stylu CleanArchitecture B. Martina niewiele da się wyciągnąć, ponieważ omawiają ogólne pojęcia, a chciałbym poznać konkretne biznesowe praktyki, konwencje nazewnictwa, najlepiej przeczytać kilka produkcyjnych, otwartoźródłowych implementacji tych pomysłów w praktyce.

Dotychczas wystarczyło pisanie 'dobrego kodu', ale dołączyłem do zespołu który trzyma się takich praktyk aż do porzygu i nie chciałbym odstawać kompetencjami. Nie chcę również krytykować, dopóki nie nadgonię teorii i sam nie spróbuję.

Zastanawiam się nad #golang , albo #kotlin . Czy iść w starą klasykę i próbować z #java albo C#?

#programowanie #programista15k #czystykod
  • 12
@Reevo: Kotlin jest spoko, ale brak package-private trochę komplikuje sprawy, bo jak chcesz korzystać z enkapsulacji pełną parą to trzeba wtedy kombinować z modułami i słowem kluczowym internal. Ma to nawet swoje plusy (np. wykrywanie circular depsów w compile-time), ale w celach naukowych chyba zacząłbym od Javy
@Reevo: Nie ma. W C++ każda firma ma swoje, wypracowane w latach 80. lub 90.

Jedyny sposób to zatrudnić się i wdrożyć w projekt.


@arysto2011: Akurat w C++ czasami jest problem ze zrozumieniem bezpośrednio kodu, jeżeli implementuje niskopoziomowy feature, ale architekture jest z reguły jasna i bez sztywnych wytycznych.

Za to w Darcie/Flutterze pracuję ze sporą ilością ex-webdevów i dopiero teraz zderzyłem się z całym światem architektury hexagonalnej, DDD, clean
@Reevo:

ani na GitHubie nie mogę znaleźć żadnego przykładu produkcyjnej wielkości kodu na którym mógłbym się wzorować


I raczej nie znajdziesz - te wzorce wprowadzają duży overhead, który zwraca się dopiero przy skomplikowanych domenach ewoluujących z czasem. Na githubie znajdziesz co najwyżej jakieś pet projecty, w których te implementacje wydadzą się nadmiernie skomplikowane i przekombinowane, bo po prostu brakuje skali żeby pokazać ich użyteczność.

Nie mam żadnych Dartowych prelekcji, ale gdybyś
@kernelpan1c: Bomba, dzięki. Nadal nie jest to surowy kod, ale wygląda na dobry punkt zaczepiania.

Koncepcję tych praktyk rozumiem. Właśnie w drugą stronę, chciałbym zobaczyć duży projekt, ponieważ nie wiem jak radzić sobie z kwestiami które wykraczają poza .

Np. gdzie umieścić logikę związaną z obsługą platformy (interakcja z systemem plików, aparatem itd.).

Albo jeżeli mam formularz do uzupełnienia i chciałbym stworzyć tymczasową klasę, na przechowanie wprowadzonych wartości. To nie jest
Z książek w stylu CleanArchitecture B. Martina niewiele da się wyciągnąć, ponieważ omawiają ogólne pojęcia, a chciałbym poznać konkretne biznesowe praktyki


@Reevo: chcesz konkretne praktyki to zapłać za Martinowi za szkolenie ( ͡° ͜ʖ ͡°)

A tak serio, to ja bym olał teorie promowane przez gościa, którego główne osiągnięcia to:

In 1991, Martin founded Object Mentor, now defunct, which provided instructor-led training on the extreme programming methodology.[citation
@Reevo: Zacznij od niebieskiej książki evansa, bo popełniasz największy błąd początkującego w DDD czyli podchodzisz do tych patternow zbyt technicznie i zerojedynkowo. To nie chodzi o to by wydzielać na siłę wzorce typu VO, Entity w kodzie, tylko by za pomocą zestawu przedstawionych technik stworzyć jak najbardziej dokładny model biznesu który probujemy odwzorowac w naszym kodzie. Od siebie polecam podcast bettersoftwaredesign.pl
@Reevo: takie najprostsze przykłady do rozmyślań:

1) Używasz bazy X, jak zmienisz ją na Y to czy apka będzie mi bez problemu działać (najlepszy scenariusz) lub czy będziesz musiał tylko zmienić nazwę serwisu/katalogu itp (jeszcze ok), czy pisać całą implementację od nowa pod nową bazę danych (to najgorszy scenariusz)
2) Tak samo jak przesyłasz gdzieś dane, nie wiem, na początku do pliku. Ale co musisz robić, aby zamiast pliku była tam
W jakim języku najlepiej nauczyć się zasad DDD, CleanArchitecture, oraz generalnie biznesowych praktyk jakości kodu?


@Reevo: Java/C# + korposwiat. W innych przypadkach zazwyczaj pisze się spaghetti code, byleby działało z tego co zaobserwowałem po 5 latach w branży.