Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DDD kurz - 4. Implementace

14 views

Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×