Java 风格 : Variable declaration in a switch

标签 java switch-statement

以下代码无法编译,因为 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/

相关文章:

java - LDAP 身份验证 - Spring Security - LdapAuthenticationProvider

java - LibGdx - Box2d - 跳跃

java - JTextField 中的文本不环绕

C# - 如果在默认情况下获取开关值

java - 允许缺失字符的正则表达式

java - 如何创建 jar 文件而不泄露我的私有(private)数据

Java强制使用枚举开关从方法返回默认语句,并覆盖所有枚举值

java - 在 switch-case 语句中使用枚举的序数值

c - 开关盒奇怪的范围

javascript - 重构 jQuery 以使用 $(this) 并从另一个元素添加/删除类