在 Java 中,if-else 是最基礎的流程控制語句。單層結構簡單明瞭,但實際開發中常需處理多層條件判斷,這就涉及到嵌套寫法。
if (condition1) {
if (condition2) {
// 邏輯 A
} else {
// 邏輯 B
}
} else {
if (condition3) {
// 邏輯 C
} else {
// 邏輯 D
}
}
// ❌ 多層嵌套難閱讀
public void process(User user) {
if (user != null) {
if (user.isActive()) {
if (user.hasPermission()) {
doBusiness();
}
}
}
}
// ✅ 衛語句扁平化
public void process(User user) {
if (user == null) return;
if (!user.isActive()) return;
if (!user.hasPermission()) return;
doBusiness();
}
當條件分支超過 3 層或包含大量業務邏輯時,考慮使用策略模式或責任鏈模式將每個分支封裝為獨立類。
// 簡單賦值場景
String result = (score >= 60) ? "及格" : "不及格";
// 多級嵌套三元運算符(不推薦,降低可讀性)
String grade = score >= 90 ? "優秀" : (score >= 80 ? "良好" : (score >= 60 ? "及格" : "不及格"));
else if 替代 else { if ... } 扁平化結構// 箭頭型代碼 - 維護噩夢
if (a) {
if (b) {
if (c) {
if (d) {
doSomething();
}
}
}
}
這種「箭頭型代碼」會導致認知負荷過高,測試困難,極易引入 Bug。
合理控制 if-else 嵌套深度,善用衛語句、多態、策略模式等手段,能顯著提升代碼可讀性與可維護性。寫代碼前多思考:這個條件能否提前返回?能否用多態替換?