Что означает принцип единой ответственности для валидации - PullRequest
6 голосов
/ 14 мая 2009

Означает ли принцип единой ответственности, что ваши правила проверки должны быть внешними по отношению к сущности?

Если да, то используете ли вы один класс для каждого правила проверки?

Ответы [ 2 ]

2 голосов
/ 14 мая 2009

Я обычно интерпретирую это как означающее, что en "сущность" и проверка сущности должны быть отдельными задачами. Обычно я использовал бы один класс, который может проверять всю сущность, но я не вижу причин ограничивать его реализацию, не позволяя этому классу использовать другие классы. Но я бы не стал делить проверку сущности на несколько классов только потому, что сущность имеет несколько атрибутов; Я бы определил ответственность валидатора как «валидация сущности X». Иногда отдельная ответственность сводится к умелому определению ответственности, и на самом деле вы устанавливают правила.

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

0 голосов
/ 14 мая 2009

Зависит от вашего определения сущности . Например, вы можете проверить входные данные на каждом слое сервиса, но эта проверка может обрабатываться отдельными классами.

...