本文介紹如何更加輕松的編寫代碼。
為什么有的代碼寫起來讓人頭昏腦脹呢?就是因為邏輯太復雜。邏輯的復雜無非體現在兩個方面,要么是步驟太長,要么是條件分支(也就是需要考慮的“例外情況
”)太多。
人們處理復雜的事情,向來有一套方法,叫分而治之,它完全可以用在開發上。
使用分而治之的方式編寫代碼,好處就是關注點減少了。把一個長的步驟分成若干個短小的步驟,那么你每次只需要關注其中的一步就可以了;把一系列復雜的判斷交給不同的對象去打理,那么你的思維又可以回到主流程上來。關注點減少的結果,一方面降低了出錯的可能,另一方面不會令人絞盡腦汁弄得身心疲憊。
如何對復雜的邏輯分而治之呢?就本人的開發經驗,我覺得有兩點很重要:
1、關注頂層邏輯
任何方法都只應該體現其頂層邏輯。比如用戶登錄的頂層邏輯,只有三個步驟:1)檢查參數格式;2)處理邏輯;3)返回結果。
2、職責分明
我們生活在一個分工精細的社會,任何事情都能(至少在名義上)找到相應的人對其負責。業務邏輯也是一樣,字符串的處理、XML的解析、連接的打開關閉、日期時間的校驗,這些邏輯都應該交給相應的類去處理,不要一窩蜂的都寫在一個方法里面,這樣寫出來的東西是一團亂麻,寫了一半可能你自己都不知道寫到哪了。
我覺得只要做到上面這兩點,面對任何復雜的邏輯都可以輕松對付,而且不易出錯——你可以想象當別人埋頭苦干的時候,你卻在一邊輕松的聽歌喝咖啡了~~
為什么有的代碼寫起來讓人頭昏腦脹呢?就是因為邏輯太復雜。邏輯的復雜無非體現在兩個方面,要么是步驟太長,要么是條件分支(也就是需要考慮的“例外情況
”)太多。
人們處理復雜的事情,向來有一套方法,叫分而治之,它完全可以用在開發上。
使用分而治之的方式編寫代碼,好處就是關注點減少了。把一個長的步驟分成若干個短小的步驟,那么你每次只需要關注其中的一步就可以了;把一系列復雜的判斷交給不同的對象去打理,那么你的思維又可以回到主流程上來。關注點減少的結果,一方面降低了出錯的可能,另一方面不會令人絞盡腦汁弄得身心疲憊。
如何對復雜的邏輯分而治之呢?就本人的開發經驗,我覺得有兩點很重要:
1、關注頂層邏輯
任何方法都只應該體現其頂層邏輯。比如用戶登錄的頂層邏輯,只有三個步驟:1)檢查參數格式;2)處理邏輯;3)返回結果。
public boolean login(String username, String password) {
if (!checkParameters(username, password) {
return false;
}
boolean result = checkUserPassword(username, password);
return result;
}
這是頂層邏輯,將這三句話寫好之后,我們再分別去實現每個步驟,而每個步驟當中又只包含頂層邏輯。這樣做有效的減少了關注點,讓代碼寫起來更加輕松。if (!checkParameters(username, password) {
return false;
}
boolean result = checkUserPassword(username, password);
return result;
}
2、職責分明
我們生活在一個分工精細的社會,任何事情都能(至少在名義上)找到相應的人對其負責。業務邏輯也是一樣,字符串的處理、XML的解析、連接的打開關閉、日期時間的校驗,這些邏輯都應該交給相應的類去處理,不要一窩蜂的都寫在一個方法里面,這樣寫出來的東西是一團亂麻,寫了一半可能你自己都不知道寫到哪了。
我覺得只要做到上面這兩點,面對任何復雜的邏輯都可以輕松對付,而且不易出錯——你可以想象當別人埋頭苦干的時候,你卻在一邊輕松的聽歌喝咖啡了~~