Koziołek napisał(a):
PESEL może być poprawny, pomimo że nie spełnia warunków walidacji (taki jego urok). Zwracasz zatem obiekt
Pesel
, który ma w środku informację o swojej poprawności. Następnie tam, gdzie wymagane jest by pesel był poprawny, odczytujesz tą informację i decydujesz co z nią zrobić.Dlaczego nie:
- Wyjątki – bo niepoprawne dane wejściowe nie są czymś wyjątkowym. Szczególnie w kontekście biznesowym.
To jest błędne podejście. Jeśli mamy konkretny format numeru PESEL który akceptujemy to jak najbardziej przy próbie użycia formatu niepoprawnego mamy sytuację wyjątkową. Value Object jest strażnikiem takich zasad i nie powinien przyjmować niepoprawnych wartości. A już na pewno nie powinien zwracać niczego związanego z walidacją, chyba że jawnie wystawimy metodę w stylu TryParse
i zwracającą boolean.
Podam prostszy przykład- jeśli mam VO typu PersonAge
zakładając że jest to w kontekście osób już urodzonych, to przekazanie negatywnej wartości jest jak najbardziej wyjątkiem i tymże powinno skutkować.
EDIT: Dopiero zobaczyłem Twój drugi post. Mea culpa.