我們有一些簡短的方法可以將一些值從一個域轉換到另一個域,它通常有一個switch或多個巨大的塊ifs,例如:private DomainB translateSomething(final DomainA data) { DomainB result = null; if (data != null) { if (CONSTANT_A_VALUE_X.equals(data)) { result = CONSTANT_B_VALUE_X; } else if (CONSTANT_A_VALUE_Y.equals(data)) { result = CONSTANT_B_VALUE_Y; } else if (CONSTANT_A_VALUE_Z.equals(data)) { result = CONSTANT_B_VALUE_Z; } else { result = CONSTANT_B_VALUE_W; } } return result;}它可能是一個switch而不是if,或者每個結果可以有多個條件,甚至可以在方法參數上接收多個域以幫助確定一個結果,這就是為什么它不能是地圖的原因。當我看到這個時,我在第一個條件上應用了短路,并刪除了所有else塊,而不是將值分配給最終將返回的變量,我將返回放在條件本身內,產生以下代碼:private DomainB translateSomething(final DomainA data) { if (data == null) { return null; } if (CONSTANT_A_VALUE_X.equals(data)) { return CONSTANT_B_VALUE_X; } if (CONSTANT_A_VALUE_Y.equals(data)) { return CONSTANT_B_VALUE_Y; } if (CONSTANT_A_VALUE_Z.equals(data)) { return CONSTANT_B_VALUE_Z; } return CONSTANT_B_VALUE_W;}我已經厭倦了幾次,我知道 IntelliJ 在檢查規則方面有很大幫助,IntelliJ 上是否有一些規則暗示了這一點?
1 回答

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
您可以使用“將返回更接近值的計算.. ”快速修復“返回”與結果計算檢查分開(Java |代碼風格問題|“返回”與結果計算分開),然后應用“刪除冗余'else' ”冗余 'else'檢查的快速修復(Java | 控制流問題 | 冗余 'else')。
添加回答
舉報
0/150
提交
取消