以下代码无法编译,因为 eater
被定义了两次:
switch (vegetable) {
case TOMATO:
Eater eater = new Eater(Tomato.class, many parameters);
eater.eat(more parameters);
return true;
case POTATO:
Eater eater = new Eater(Potato.class, many parameters);
eater.eat(more parameters);
return true;
case CARROT:
doSomethingElse();
return true;
}
我应该:
- 使用单独的变量 `tomatoEater` 和 `potatoEater`,使代码更难维护?
- 在 `switch` 之前定义 `eater`,让更多人可以访问它?
- 只在第一次定义 `eater`,导致潜在的混淆?
- 添加大括号,使代码更冗长?
- 有更好的主意吗?
最佳答案
我个人要么使用大括号,要么完全放弃局部变量:
new Eater(Potato.class, many parameters)
.eat(more parameters);
这样做的缺点是调试起来有点困难。显然这不是你的真实代码......这使得很难说出正确的事情。很可能正确的做法是实际上将案例主体分解为单独的方法。
关于Java 风格 : Variable declaration in a switch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3733011/