Коли у мене є багато даних, які потрібно перевірити, чи слід створити новий клас з єдиною метою перевірки чи я повинен дотримуватися перевірки методом?
Мій конкретний приклад розглядає турнір і клас події / категорії: 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?
}
}