2 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
從干凈代碼的角度來看,這兩個(gè)選項(xiàng)(if/else 或 switch)都不是優(yōu)選的。但在沒有更多背景的情況下解決這個(gè)問題是不可能的。
首先,真正的問題是示例代碼中的方法必須查看如此多的參數(shù)。
函數(shù)的理想?yún)?shù)數(shù)量為零 (niladic)。接下來是一個(gè)(一元),緊接著是兩個(gè)(二元)。應(yīng)盡可能避免三個(gè)參數(shù)(三元組)。超過三個(gè)(多元)需要非常特殊的理由,然后無論如何都不應(yīng)該使用。
換句話說:您努力編寫參數(shù)盡可能少的方法。因?yàn)槊總€(gè)參數(shù)都可能增加對此類 if 或 switch 對比的需求。
當(dāng)多個(gè) switch 語句適合您時(shí),一種潛在的途徑可能會轉(zhuǎn)向多態(tài)性。OOP 中切換的“正確”方法是使用不同的類,并使用運(yùn)行時(shí)多態(tài)性來確定在運(yùn)行時(shí)實(shí)際調(diào)用哪個(gè)方法。
鑒于添加的上下文:
ug?=?input.nextLine(); if(ug.equals("U")?||?ug.equals("u"))?{ ...
干凈的代碼解決方案可以是這樣的:
ug?=?input.nextLine(); if?(ug.equalsIgnoreCase("u"))?{ ??fetchValuesForUndergraduate();? }
這就對了!當(dāng)前代碼的真正問題是它在一個(gè)地方做了很多事情。對此的“干凈代碼”解決方案是將代碼移動到不同的幫助器方法中,這些方法具有很好的說明性名稱,并且執(zhí)行的操作要少得多。

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
無論哪種方式都可以爭論——如果它像這樣適合你,我就不會太擔(dān)心。Switch 語句將使代碼看起來像這樣
switch(var1)
case 1:
{
//code
switch(var2)
case 1:
{
//code
}
switch(var3)
case 1:
{
//code
}
case 2:
{
//code
}
}
case 2:
{
//code
}
case 2: {
//code
}
無論哪種方式你絕對可以讓它工作
添加回答
舉報(bào)