2 回答

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

TA貢獻1998條經驗 獲得超6個贊
無論哪種方式都可以爭論——如果它像這樣適合你,我就不會太擔心。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
}
無論哪種方式你絕對可以讓它工作
添加回答
舉報