繁体   English   中英

大括号中的“开关”中的框架代码“大小写”-{}

[英]Frame code “case” in the “switch” by curly braces - {}

我从未见过“开关”中的代码“ case”由花括号-{}构成。 我可以用大括号隐藏变量以防万一吗? 还是不好的做法? 有什么可能的后果?

我需要使用开关,其中每种情况都是由相同类型的变量组成的(我认为最好保留相同的名称),但是它们具有不同的值。

Dialog dialog;
switch (id) {
    case ID_1: {
        String[] keys = ...; // some array
        String[] values = ...;
        ...
        return dialog;
    }
    ...
        case ID_2: {
        String[] keys = ...; // different values
        ...
        return dialog;
    }
    default:
        return null;
    }
}

我可以用大括号隐藏变量以防万一吗?

是的你可以。

还是不好的做法?

这可能是您可以重构代码的信号-但是很难看出每种case代码的作用。

有什么可能的后果?

除了限制这些变量的范围外,这就是您的目标。

当您在个别情况下需要不同的局部变量时,这确实是非常普遍的做法。

但是,如果您需要大量它们,尤其是当它们几乎完全相同时,则可能表明该代码将被过度粘贴。

举例来说,除非每种情况下的代码除了数据之外都没有显着差异,否则将键和值保留在数组中或改为具有hastable可能有意义。

keys   = dialog_data[id].keys;
values = dialog_data[id].values;  

该问题实际上没有包含足够的信息来知道是否是这种情况。

有时,如果代码中包含一些常量,则可以将它们导出到具有public-static-final字段的另一个类中,这可以解决您的问题。 我不能多说,因为我们看不到完整的代码。

您可以将对话框数据保留在HashTable中。 这样,您可以遍历键集并相应地更改数据值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM