我只是想知道在规范模式中是否有推荐的策略来处理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
}
}
我不确定这是否可以视为一个自以为是的问题(如果是,请道歉),但是我只是想知道哪种方法更符合规范模式?
参考