簡體   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