0

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

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

参考

4

0 回答 0