One*_*ree 1 java short-circuiting
是否依赖于短路评估会使代码变得脆弱?我写了一段代码,基本上如下所示.我的教授要我改写它.
(注意:我肯定知道四个条件中只有一个是真的,因为给定任何流,只有一个'下一个标记',对吗?)
foo getFoo()
{
Bar bar;
if ((bar = peekAndGet('x')) != null
|| (bar = peekAndGet('y')) != null
|| (bar = peekAndGet('z')) != null
|| (bar = peekAndGet('t')) != null)
return produce(bar);
else
return null;
}
Run Code Online (Sandbox Code Playgroud)
这真的很脆弱吗?我觉得它很完美.但是我应该怎么重写呢?
我会重构它并像这样写:
char[] values = {'x', 'y', 'z', 't'};
for (char c : values) {
Bar bar = peekAndGet(c);
if (bar != null) return produce(bar);
}
return null;
Run Code Online (Sandbox Code Playgroud)
注意:这样做的一个很好的理由是,在我第一次阅读你的代码时,我认为它看起来很麻烦,直到我读到你的问题.对于那些真正错误的事情,你想要保留那些"看起来不对劲"的时刻.
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |