Код пахнет или нет? Валидаторы и модели имеют один и тот же вид - PullRequest
0 голосов
/ 22 апреля 2009

Мы используем весеннюю проверку для проверки наших моделей перед их добавлением в базу данных. Так, например,

Заказ -> OrderItem

перед сохранением заказа в базе данных он проверяется OrderValidator

OrderValidator проверяет делегатов заказа в OrderItemValidator для проверки OrderItem с помощью Order. Таким образом, иерархия или валидаторы в этом случае выглядят как

OderValidator -> OrderItemValidator

Знание того, что заказ имеет элементы orderItems, присутствует как в валидаторе, так и в модели.

Мне интересно, является ли это признаком неявного дублирования (что-то похожее на Параллельная иерархия наследования Запах кода). Если да, то каким образом я мог бы избежать этого?

Ответы [ 2 ]

1 голос
/ 23 апреля 2009

Я хотел бы взглянуть на разделение процесса проверки на независимую от класса функцию и параметры для каждого класса, которые реальный класс может использовать с функцией проверки, чтобы в основном проверить себя. Жизнеспособность такого подхода требует большего знания проблемного пространства, чем было предоставлено.

0 голосов
/ 23 апреля 2009

По моему опыту, валидаторы лучше всего реализовывать с использованием какого-либо декоратора. Они не должны наследовать от ничего , так как валидаторы не имеют рациональных отношений между собой.

Валидаторы просто смотрят на данные, относящиеся к модели, а не на поведение модели, поэтому я не думаю, что какая-либо иерархия вообще подойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...