為什麼你的應用應該崩潰?

簡評:不要害怕崩潰,這樣才能讓你清楚了解到應用中存在的問題,發布之前詳盡的測試才是避免崩潰的最好方法。

作為程序員,我們隨時都在避免程序崩潰。但是,未處理的異常就沒有一點益處嗎?或許有時你反而會希望應用崩潰呢。

首先,假設我們有一個簡單的應用用於顯示運動員列表:

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 導讀三篇優質英文文章。

推薦閱讀:

node-webkit教程(13)gpu支持信息查看
Serverless開發編程思想

TAG:软件开发 | 编程 | 程序员 |