2

我从未见过“switch”中的代码“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;
    }
}
4

4 回答 4

4

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

是的你可以。

或者这是一个不好的做法?

这可能表明您可以重构您的代码 - 但如果不看代码在每个case.

可能的后果是什么?

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

于 2012-10-13T14:27:30.487 回答
1

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

但是,如果您需要很多它们,尤其是当它们几乎完全相同时,这可能表明代码被过度复制粘贴。

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

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

这个问题并没有真正包含足够的信息来知道是否是这种情况。

于 2012-10-13T14:30:13.017 回答
0

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

于 2012-10-13T14:30:51.720 回答
0

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

于 2012-10-13T14:51:37.600 回答