Successfully reported this slideshow.

DDD kurz - 4. Implementace

0

Share

Loading in …3
×
1 of 31
1 of 31

DDD kurz - 4. Implementace

0

Share

Download to read offline

DDD je o doméně, modelování, ale bez kódu to nejde. Na 4. kurzu se naučíte implementovat value objekty (immutable, side-effect free, closure of operations) a entity a ukážeme si, jak veškerý kód psát pomocí TDD.

V druhé části si představíme rozdělení vrstev domény a infrastruktury, implementujeme doménové rozhraní a ukážeme si, jak psát testy na rozhraní.

Ve fakturační doméně rozebereme koncept peněz a implmentaci pomocí vlastních value objektů a existujících knihoven.

DDD je o doméně, modelování, ale bez kódu to nejde. Na 4. kurzu se naučíte implementovat value objekty (immutable, side-effect free, closure of operations) a entity a ukážeme si, jak veškerý kód psát pomocí TDD.

V druhé části si představíme rozdělení vrstev domény a infrastruktury, implementujeme doménové rozhraní a ukážeme si, jak psát testy na rozhraní.

Ve fakturační doméně rozebereme koncept peněz a implmentaci pomocí vlastních value objektů a existujících knihoven.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

DDD kurz - 4. Implementace

  1. 1. Svaťa Šimara Implementace Domain-Driven Design Implementace Domain-Driven Design
  2. 2. Demo s TDD
  3. 3. Value Object
  4. 4. Immutable
  5. 5. Immutable • Příjmá stav pouze v konstruktoru • Umožňuje posílat VO tam a zpět systémem • Použití bez obav • Snižuje potřebu přemýšlení – Může to někdo změnit? – Můžu to poslat? – Musím to klonovat? – Když to naklonuju, co na to Doctrine?
  6. 6. Side-effect free
  7. 7. Side-effect free
  8. 8. Side-effect free
  9. 9. Side-effect free
  10. 10. Side-effect free • Pro stejné vstupy vrací stejné výstupy • Nezávisí na globálním stavu ani jej nemění • Snižuje potřebu přemýšlení • Volání funkce lze nahradit výsledkem – Cachování
  11. 11. Closure of Operation Přirozená čísla +
  12. 12. Closure of Operation Přirozená čísla + Racionální čísla :
  13. 13. Closure of Operation Items Result
  14. 14. Closure of Operation • Pracuje pouze s jednou třídou • Snižuje potřebu přemýšlení
  15. 15. Closure of Operation • Obvykle jich moc není • Snižováním množství tříd v metodě snižujeme množství přemýšlení Items
  16. 16. Vrstvy
  17. 17. Infrastruktura • Kanály • Trubky • Odvoz odpadu • Elektrické sítě • …
  18. 18. Infrastruktura • Zajišťuje životaschopnost • Nechceme se o ni starat • Nahraditelná – Potřebuju lepší dodávku energie, tak změním dodavatele
  19. 19. Vrstva infrastruktury
  20. 20. Vrstva infrastruktury • Implementace doménových rozhraní • Nahraditelná • Umožňuje odložit důležitá rozhodnutí – Nebo je změnit
  21. 21. Demo infrastruktury
  22. 22. Peníze
  23. 23. Peníze jako float • 10 = 1.25 * 2^3 – chyba 0
  24. 24. Peníze jako float • 10 = 1.25 * 2^3 – chyba 0 • 0.25 = 1 * 2^-2 – chyba 0
  25. 25. Peníze jako float • 10 = 1.25 * 2^3 – chyba 0 • 0.25 = 1 * 2^-2 – chyba 0 • 0.10 = 1.6000001430511475 * 2^-4 – chyba -1.05930328369140625E-9
  26. 26. Peníze jako float • Problémy • Kumulace chyby • Zaokrouhlování • Porovnávání
  27. 27. Peníze jako moneyphp/money • Udržovaná knihovna • Měny • Umí toho hodně – Zaokrouhlování – Celočítelné dělení – …
  28. 28. Peníze jako VO
  29. 29. Peníze jako VO • Snadná implementace • Přesně pro naše případy užití
  30. 30. Co použít pro peníze • Knihovnu pokud přesně odpovídá naší doméně – Ušetří nám čas – Řeší záludnosti • Vlastní implementaci – Výukové účely, pochopení problémů – Pokud je knihovna kanón na vrabce
  31. 31. Domain-Driven Design Svaťa Šimara svatasimara.cz simara-svatopluk @svatasimara

×