為什麼你的應用應該崩潰?
簡評:不要害怕崩潰,這樣才能讓你清楚了解到應用中存在的問題,發布之前詳盡的測試才是避免崩潰的最好方法。
作為程序員,我們隨時都在避免程序崩潰。但是,未處理的異常就沒有一點益處嗎?或許有時你反而會希望應用崩潰呢。
首先,假設我們有一個簡單的應用用於顯示運動員列表:
public void showPlayers(List<Player> soccerPlayers) { // some awesome code here}
理想情況下,這段代碼當然可以工作。但是,有經驗的你肯定發現了應該先判斷是否為 null 和 empty。
public void showPlayers(List<Player> soccerPlayers) { if (soccerPlayers == null || soccerPlayers.isEmpty()) return; // some awesome code here}
但很明顯,null 檢查讓代碼變得冗餘了,更糟的是,一旦你開始用了,你就會在每個地方都用到:
public void showPlayers(List<Player> soccerPlayers) { if (soccerPlayers == null) return; if (myRecyclerView == null) return; if (myRecyclerView.getAdapter() == null) return; // some awesome code here}
即使事實上並不需要這麼多的 null 檢查,但很多人還是會加上它們。因為我們都知道對象為 null,是會直接導致程序崩潰的。
但這裡,比如 soccerPlayer 真的需要檢查是否為 null 嗎?或者應該在更低的層次返回空 list 而不是 null 呢。
並且,如果確實是 null,這裡直接 return,給用戶展示了一個空白界面,難道就是合理的嗎?
與其每次都去檢查輸入是否為 null,倒不如從源頭處就認真設計。崩潰不可怕,重要的是盡量通過開發人員測試、QA 部門、beta 測試等等方式來保證你的應用質量,而不是濫用 null 檢查,或 try...catch 等方式來避免崩潰。
原文:WHY YOUR APP SHOULD CRASH
擴展閱讀:
- 分享一個 Android XML 的命名規範
歡迎關註:知乎專欄「極光日報」,每天為 Makers 導讀三篇優質英文文章。
推薦閱讀: