Java开关用例



我不愿使用开关,但是我看到的开关将在Java 12

中得到改善

Java 12将开关表达式添加为实验特征。Java Switch表达式是可以返回值的交换语句。

我发现的唯一有用的用例(在Java 12之前(可能是有用的,它是从一小部分封闭情况下返回不同的值,例如:

    switch (input) {
    case "A":
        return "1";
    case "B":
        return "2";
    default:
        return "0";
    }

或Java中12个示例:

return
switch(digitInDecimal){
    case  0 -> '0';
    case  1 -> '1';
    case  2 -> '2';
    default -> '?';

,但我找到了一个旧但高级的答案,该答案说避免了多个返回陈述:

将值分配给本地变量,然后将其归还最终被认为是一个好习惯。具有多个出口的方法很难进行调试,并且很难阅读。

所以我想知道,由于切换更改,该答案仍然相关吗?

我是否必须等待Java 12,可以在没有临时变量和断裂的情况下使用开关?

将值分配给本地变量,然后将其归还最终被认为是一个很好的做法。

我不知道什么时候被认为是一个好习惯。对我来说,switch通常是 * *犯了设计错误的指标。我宁愿努力思考如何避免切换,而不是想知道如何从开关返回值。

一些示例

java中的if语句的长列表
如何避免Java中的开关语句
将许多"如果其他"陈述转换为清洁方法

具有多个出口的方法很难进行调试,并且很难阅读。

对于具有很多 break s的方法也是如此 - 如果您选择"局部变量方法",这就是您要做的。

我认为,这些都不是

// 1
switch (input) {
    case "A":
        return "1";
    case "B":
        return "2";
    default:
        return "0";
}
// 2
String varibleToReturn = null;
switch (input) {
    case "A":
        varibleToReturn = "1";
        break;
    case "B":
        varibleToReturn = "2";
        break;
    default:
        varibleToReturn = "0";
}
return varibleToReturn;
// 3
return switch(digitInDecimal) {
    case  0 -> '0';
    case  1 -> '1';
    case  2 -> '2';
    default -> '?';
}

有显着的差异或略有改进。是的,Java-12的转换将带来更多简洁性和表现力,但是基本的想法仍然相同。

我必须等待Java 12,可以在没有临时变量和中断的情况下使用开关?

这是什么意思?:)不,截止日期是明天,您必须与现在所拥有的一切一起工作。


*我没有低估开关的有用性。例如,当您以低级别编程或编写优化时,它可能会派上用场。

我只是说在现实世界中, springs hibernates 在模式的世界中,开关是过时的。

,但我找到了一个旧但高级的答案,说避免了多个返回语句:

将值分配给本地变量,然后在结束被认为是一个好习惯。有多个出口的方法是很难调试,很难阅读。

所以我想知道,由于切换更改,该答案仍然相关吗?

这是一个常见的误解,它起源于"单一条目,单一出口"。(第24页(所有这些都源自另一个时代,它导致结构化的编程语言,最终导致面向对象的编程语言(例如Java(。

不必担心多个return语句,没有任何问题。

相关内容

  • 没有找到相关文章

最新更新