From 7c87b04e23eedf25c56cb981a8d78581fbbe3c12 Mon Sep 17 00:00:00 2001 From: jem Date: Thu, 22 Jul 2021 20:00:51 +0200 Subject: [PATCH] add validation --- adr-provs/ddd-validation.md | 24 ++++++++++++++++++++++++ adr-provs/ddd-validation.png | Bin 0 -> 61745 bytes adr-provs/partial-execution.md | 2 -- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 adr-provs/ddd-validation.md create mode 100644 adr-provs/ddd-validation.png diff --git a/adr-provs/ddd-validation.md b/adr-provs/ddd-validation.md new file mode 100644 index 0000000..0167321 --- /dev/null +++ b/adr-provs/ddd-validation.md @@ -0,0 +1,24 @@ +# ddd-validation + +## Status + +to be discussed + +## Context + +We want express validity on domain objects. Clear described validity helps on +* avoid many redundant and unnecessary (null-)checks spread around in the code +* collects all validity constraints to one defined place + +### Principles affected + +* Check the domain borders +* Do not tie validation to object creation / serialization +* propagate validation through aggregates + +![ddd-validation](ddd-validation.png) + +### see also: +* [Fowler] Do not use exceptions for validation: https://martinfowler.com/articles/replaceThrowWithNotification.html +* [Fowler] Contextual Validation: https://martinfowler.com/bliki/ContextualValidation.html +* [Vladimir Khorikov] Some ideas for validation in DDD: https://enterprisecraftsmanship.com/posts/validation-and-ddd/ diff --git a/adr-provs/ddd-validation.png b/adr-provs/ddd-validation.png new file mode 100644 index 0000000000000000000000000000000000000000..5591eaf9ecc34d9e17e384ebf3849cf910cd86d4 GIT binary patch literal 61745 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�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 SgGca3(!qU4G_uspuKou(ykxTg literal 0 HcmV?d00001 diff --git a/adr-provs/partial-execution.md b/adr-provs/partial-execution.md index 829807b..6827a09 100644 --- a/adr-provs/partial-execution.md +++ b/adr-provs/partial-execution.md @@ -25,5 +25,3 @@ We want to be able to execute single provision steps to apply partial installati * Vorbehalt2: entscheiden, was in der domain testbar sein muss * Wir nutzen nur einschichtige Konfiguration, da wir nur noch uns selbst als Nutzerkreis ansehen. - -