( sz332 | 2021. 03. 22., h – 17:43 )

Az okok a következők:

- Ahhoz, hogy jó minőségű kód generálódjon, nagyon sokat kell dolgozni a model transzformátorokon és a modelleken. Nagyon hamar odáig jut az ember, hogy végtelen mennyiségű transzformátor ír, ami aztán valahogy sosem lesz olyan jó, amit akar, de cserébe elkezd modellben kódolni.

- Modellezőt jóval-jóval nehezebb találni, mint fejlesztőt. A modellezőknek, system analysteknek a fő feladat az lenne, hogy a rendszer logikai hibákat ne tartalmazzon, és a fejlesztőknek tényleg csak kódolni kelljen. Ez az irány szerintem, amivel foglalkozniuk kell, és a fejlesztőkre kell rábízni, hogy az adott folyamatot milyen módon implementálják (api gw-ben, infrastruktúrában, backend-ben, kézzel, stb.)

- A modelleket meg kell próbálni annyira "lightweight"-en tartani, amennyire lehet, és meg kell próbálni minél általánosabban tervezni. Próbáltuk behúzni az OO tervezést, de nagyon hamar magunkra sikerült rántanunk az egész Domain Driven Design világot, miközben ezt nem akartuk, mert az üzleti folyamatok megértéséhez hozzáadott értéke nem volt, de durván megtolta a komplexitást. Most azt mondjuk, hogy megvannak azok a részek, amiket tervezünk, és a fejlesztőkre bízzuk ennek implementálását, a kódszervezést. Ha ők egy osztályba akarnak rakni dolgokat, rakják. Ha ők külön UseCase osztályokat csinálnak, legyen úgy. Ha kitalálják, hogy funkcionális programozással akarnak valamit megoldani, ahol nincs is osztály fogalom, tegyék azt. Ha valamit SQL adatbázisban, vagy NOSQL-ben, vagy fájlrendszerben akarnak tárolni, ez is rajtuk múlik. Ezek mind implementációs kérdések. Ugyanúgy, hogy egy listán for ciklussal, iterátorral, stream-mel, vagy hogyan mennek végig.

- Mindezek ellenére lehetőség van arra, hogy modellekből másik modelleket generáljunk mint pl. OpenAPI leírásokat. De valójában a modern fejlesztőeszközökkel annyira gyorsan meg lehet csinálni sok mindent, hogy a generátoroknak szerintem korlátozott hasznossága van, és ha van is, akkor nem itt és nem így (pl. egy sima annotáció vs kézzel megírt vagy kigeneráltatott getter/setterek).