Как шаблон спецификации должен обрабатывать нулевых кандидатов? - PullRequest
0 голосов
/ 13 января 2019

Мне просто интересно, есть ли рекомендуемая стратегия для работы с null кандидатами в шаблоне спецификации. На мой взгляд, есть две возможные стратегии:

  • Бросить исключение, если кандидат null.
  • Возвращает false для случаев, когда null не является допустимым значением кандидата.

Примеры написаны на Kotlin, но это может легко применяться и к C # и Java.

Пример - сгенерировать исключение

class RangeSpecification<T : Comparable<T>>(
    private val min: T,
    private val max: T
) : Specification<T?>() {

    override fun isSatisfiedBy(candidate: T?): Boolean {
        checkNotNull(candidate) 
        // ^ Throws IllegalStateException("Required value was null.")
        return candidate in min..max
    }
}

Пример - Возврат false

class RangeSpecification<T : Comparable<T>>(
    private val min: T,
    private val max: T
) : Specification<T?>() {

    override fun isSatisfiedBy(candidate: T?): Boolean {
        return candidate != null && candidate in min..max
    }
}

Я не уверен, что это квалифицируется как самоуверенный вопрос (и извинения, если это так), но мне просто интересно, какой подход более подходит в соответствии с шаблоном спецификации?

Ссылки

...