1.檢查傳入的參數,如果檢驗不通過就回傳錯誤訊息
2.檢查物件的狀態,如果不符合function使用的物件就
3.簡單快速的處理明顯的邏輯
舉個例子像是以下的程式碼
if(username!=null){ if(password!=null){ System.out.println("do something"); //這邊是要處理的邏輯 }else { System.out.println("password is null"); } }else { System.out.println("username is null"); }
我們可以知道username跟password皆不為null時才會執行程式
這邊我們可以閱讀是因為巢狀的條件還只有兩層,而且有進行縮排,要是越來越多層
或是程式碼一常,我們不見得可以閱讀程式的執行條件是什麼
以這個例子做出Guard Clause的話大概是長這個樣子
if(username!=null && password!=null){ System.out.println("do something"); //這邊是要處理的邏輯 }else if(password==null){ System.out.println("password is null"); }else{ System.out.println("username is null"); }
把要處理的邏輯直接表現出來,這樣是否感覺比較容易明白想要執行的邏輯呢?
我自己覺得還是看每個人習慣,不過這種程式風格就給各位當做參考了
參考資料:http://c2.com/cgi/wiki?GuardClause