Я думаю об использовании шаблона спецификации для проверки. Сложно то, как сказать пользователю, почему некоторые спецификации не были выполнены. Что если Specification.IsSatisfiedBy()
вернет не только значение bool
, но и причину сбоя. Это будет выглядеть примерно так:
interface ISpecification<T>
{
CheckResult IsSatisfiedBy(T candidate);
}
, где CheckResult
:
class CheckResult
{
public bool IsSatisfied { get; }
public string FailureReason { get; }
}
В работе Фаулера и Эванса существует концепция Частично удовлетворенной спецификации , цель которой состоит в том, чтобы объяснить, что именно не было выполнено. Однако в этом документе он реализован как дополнительный метод remainderUnsatisfiedBy , который возвращает спецификацию, которая не была выполнена Candidate .
Таким образом, вопрос заключается в следующем: при использовании Спецификации для целей проверки, как предоставить пользователю обратную связь о том, что данная Спецификация не была удовлетворена? Является ли решение, которое я представил выше, хорошим?