在我的代码中,我发现我的方法可能返回 null 的情况。在这种情况下,我宁愿抛出异常也不愿返回 null。但是我不想使用常规 if 因为在我看来它看起来很糟糕。参见代码:
class Type{}
@Field Queue<Type> q1 = [] as Queue
@Field Queue<Type> q2 = [] as Queue
Type regularMethod(){
Type toReturn = q1.poll() ?: q2.poll()
if(toReturn == null)
throw new RuntimeException("was null value")
return toReturn
}
Type myMethod(){
return q1.poll() ?: q2.poll() ?: exception()
}
Type exception(){
throw new RuntimeException("was null value")
}
Run Code Online (Sandbox Code Playgroud)
您认为在这里使用 elvis 运算符怎么样?它对你来说更具可读性吗?或者有人可以建议更好的解决方案吗?
这当然是一个偏好和风格的问题,但我不喜欢它。目标不是获得最少的代码行或最短的代码行。目标应该是最终得到简洁而富有表现力的代码。这通常很简短,但简洁并不是主要目标。我认为q1.poll() ?: q2.poll() ?: exception()对于人类来说解析起来并不是特别容易。