Hoi,
Stel je hebt een systeem met entiteiten (BreadRoll, CandyFloss, ik noem maar wat) en je wil de velden van die dingen controleren. Daartoe maak je per veld een validatie-object, bijvoorbeeld BreadRollWeightValidator met daarin de functie isValid().
Zou je uit isValid() een exception gooien als het mis is of zou je zoals ik nu doe eerder een FieldState object teruggeven? Een FieldState object is in feite een soort exceptie. Het heeft een $message veld en een $valid boolean veld.
Voordeel van FieldStates is vooral dat de client programmeur niet hoeft te try-catchen en direct iets in handen heeft waar-ie iets mee kan in de interface. Hij zou stuk voor stuk de velden van een BreadRoll kunnen valideren en de FieldStates verzamelen in een array die dan doorgegeven wordt naar de display laag. Of ik zou een functie kunnen aanbieden waarmee je in 1 keer een hele BreadRoll mee kan valideren, die dan een array met FieldStates teruggeeft.
De vraag komt denk ik neer op of je foute invoer van een gebruiker/client programmeur ziet als business as usual of als inderdaad een uitzondering die een exception verdient.
Stel je hebt een systeem met entiteiten (BreadRoll, CandyFloss, ik noem maar wat) en je wil de velden van die dingen controleren. Daartoe maak je per veld een validatie-object, bijvoorbeeld BreadRollWeightValidator met daarin de functie isValid().
Zou je uit isValid() een exception gooien als het mis is of zou je zoals ik nu doe eerder een FieldState object teruggeven? Een FieldState object is in feite een soort exceptie. Het heeft een $message veld en een $valid boolean veld.
Voordeel van FieldStates is vooral dat de client programmeur niet hoeft te try-catchen en direct iets in handen heeft waar-ie iets mee kan in de interface. Hij zou stuk voor stuk de velden van een BreadRoll kunnen valideren en de FieldStates verzamelen in een array die dan doorgegeven wordt naar de display laag. Of ik zou een functie kunnen aanbieden waarmee je in 1 keer een hele BreadRoll mee kan valideren, die dan een array met FieldStates teruggeeft.
De vraag komt denk ik neer op of je foute invoer van een gebruiker/client programmeur ziet als business as usual of als inderdaad een uitzondering die een exception verdient.