规范模式应如何处理空候选?

时间:2019-01-13 17:38:34

标签: language-agnostic null-check specification-pattern

我只是想知道在规范模式中是否有推荐的策略来处理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
    }
}

我不确定这是否可以视为一个自以为是的问题(如果是,请道歉),但是我只是想知道哪种方法更符合规范模式?

参考

0 个答案:

没有答案