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