在《阿里巴巴Java開發手冊》中強制規定:避免後續程式碼維護困難,請勿超過3層。如果超過3層的if-else
的邏輯判斷程式碼可以使衛語句、策略模式、狀態模式等來實現。衛語句貌似有點概念,但記不清了,所以在這回顧一下。至於策略模式和狀態模式有空也整理整理。
概念
衛語句(guard clauses)就是把複雜的條件表示式拆分成多個條件表示式,比如一個很複雜的表示式,巢狀了好幾層的if-then-else
語句,轉換為多個if語句,實現它的邏輯,這多條的if語句就是衛語句。
用法
有時候真正的業務程式碼可能在巢狀多次才執行,其他分支只是簡單報錯返回的情況。對於這種情況,應該單獨檢查報錯返回的分支,當條件為真時立即返回,這樣的單獨檢查就是應用了衛語句。
作用
衛語句可以把我們的視線從多層巢狀的異常處理中解放出來,集中精力處理真正的業務程式碼,且能夠使得程式碼結構更為清晰可讀。
舉慄
使用衛語句之前:
public void today() {
if (!isBusy()) {
if (!isFree()) {
System.out.println(“stay at home to learn Alibaba Java Coding Guidelines.”);
}else{
System.out.println(“go to travel.”);
}
}else{
System.out.println(“change time.”); return;
}
return;
}
複製程式碼
應用衛語句:
public void today() {
// 衛語句
if (isBusy()) {
System.out.println(“change time.”);
return; // 直接返回
}
// 衛語句
if (isFree()) {
System.out.println(“go to travel.”);
return; // 直接返回
}
// 關注真正的業務程式碼
System.out.println(“stay at home to learn Alibaba Java Coding Guidelines.”);
return;
}
複製程式碼