Когда у меня есть много данных, которые необходимо проверить, я должен создать новый класс с единственной целью проверки или я должен придерживаться проверки в методе?
Мой конкретный пример рассматривает турнир и класс события / категории: Tournament
и Event
, который моделирует спортивный турнир, и у каждого турнира есть одна или несколько категорий.
В этих классах есть все, что нужно проверить: игроки должны быть пустыми, должны быть уникальными, количество матчей, которые должен сыграть каждый игрок, количество игроков в каждом матче, предопределенные матчи и действительно большой набор вещей, включающий в себя гораздо больше сложные правила.
Есть также некоторые части, которые мне нужно проверить в целом, например, как классы интегрируются друг с другом. Например, унитарная проверка Player
может быть вполне приемлемой, но если в событии дважды участвует один и тот же игрок, это ошибка проверки.
Так как насчет этого ?: Я забыл об абсолютно любой предварительной проверке при использовании сеттеров классов моей модели и подобных методов для добавления данных, и вместо этого я позволил классам проверки обрабатывать это.
Таким образом , мы будем иметь что - то вроде EventValidator
с Event
членом, и validate()
метод , который проверяет весь объект, а также особые методы проверки правил всех членов.
Затем, прежде чем создавать экземпляр допустимого объекта, я выполню проверку, чтобы предотвратить недопустимые значения.
Мой дизайн правильный? Должен ли я сделать что-то по-другому?
Кроме того, я должен использовать методы проверки логического возврата? Или просто выбросить исключение, если проверка не удалась? Мне кажется, что лучшим вариантом было бы возвращение логических методов и выдача исключения, когда объект создается, например:
public Event() {
EventValidator eventValidator = new EventValidator(this);
if (!eventValidator.validate()) {
// show error messages with methods defined in the validator
throw new Exception(); // what type of exception would be best? should I create custom ones?
}
}