关于 Java switch 语句——在每种情况下使用 return 和省略 break

新手上路,请多包涵

鉴于这种方法,这是否代表了一些令人震惊的文体或语义失礼:

 private double translateSlider(int sliderVal) {
    switch (sliderVal) {
        case 0:
            return 1.0;
        case 1:
            return .9;
        case 2:
            return .8;
        case 3:
            return .7;
        case 4:
            return .6;
        default:
            return 1.0;
    }
}

显然不符合 这里 的Java教程。

然而,它清晰、简洁,到目前为止已经产生了我所需要的。是否有一个令人信服的、务实的理由来创建一个局部变量,在每个案例中为其分配一个值,为每个案例添加一个中断并在方法结束时返回值?

原文由 NickAbbey 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 961
2 个回答

为局部变量赋值然后在最后返回该值被认为是一种很好的做法。具有 多个出口的方法更难调试 并且可能难以阅读。

也就是说,这是该范例唯一的优点。它起源于只有低级过程语言的时候。这在当时更有意义。

当我们讨论这个话题时,您必须 检查一下。这是一本有趣的书。

原文由 rocketboy 发布,翻译遵循 CC BY-SA 3.0 许可协议

从人类智能的角度来看,您的代码很好。从 静态代码分析 工具来看,有多个返回,这使得调试变得更加困难。例如,您不能在返回前立即设置一个且唯一的 _断点_。

此外,您不会在专业应用程序中对 4 个滑块步骤进行硬编码。使用 max - min 等计算值,或在数组中查找它们:

 public static final double[] SLIDER_VALUES = {1.0, 0.9, 0.8, 0.7, 0.6};
public static final double SLIDER_DEFAULT = 1.0;

private double translateSlider(int sliderValue) {
  double result = SLIDER_DEFAULT;
  if (sliderValue >= 0 && sliderValue < SLIDER_VALUES.length) {
      ret = SLIDER_VALUES[sliderValue];
  }

  return result;
}

原文由 AlexWien 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题