Вернуть нужную ошибку во время валидации данных
class DataChecker{
public:
int check(data){
return checkData(data);
}
private:
int checkData(data){
int res = 0;
res = checkDataForFulFillment(data);
if(res){return res;}
res = validateData(data);
if(res){return res;}
res = checkDataForSize(data);
if(res){return res;}
}
checkDataForFulFillment(data){
if(bad){
return 1;
}
return 0;
}
validateData(data){
if(bad1){
return 2;
}
if(bad2){
return 3;
}
return 0;
}
checkDataForSize(data){
if(bad){
return 4;
}
return 0;
}
};
Пусть имеем датаЧекер, который должен проверять данные и выплюнуть ошибку наверх в случае чего. Меня смущает метод checkData
, который после каждой проверки должен проверить результат и выплюнуть самую актуальную ошибку. Кажется, тут было бы верно полиморфизмом каждую проверку затащить и хранить внутри каждой сущности результат, а потом первый найденный результат отдать наверх. Так и в цикле можно будет вызывать все проверки, а не руками, и как - будто лучше архитектурно. Что-то вот затрудняюсь в приянтии решения. Помогите разобраться
PS: код примерный, в жизни checkDataForFulFillment, validateData и все подобные это отдельные классы и проверяют они на какие-то особые свойства из предметной области. Все return возвращают enum. Ну и реализация методов не лежит в объяявлении класса :D