日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为什么你的应用程序需要崩溃

發布時間:2024/1/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么你的应用程序需要崩溃 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

翻譯之前想說一下,我英文渣的很,文章含金量感覺不是很高,主要為了鍛煉自己的英文,但是很多東西還是不會翻譯,希望有志同道合的人能互相交流下,提高下英文水平,多謝

翻譯自 Jeroen Mols 的 Why your app should crash

很多時候我看到開發人員試圖不惜一切代價避免崩潰。 但未處理的異常真的那么糟糕嗎? 非空檢查是真的答案嗎? 實際上,有時你想讓你的應用程序崩潰。 這篇文章將解釋為什么,給一些實用的建議。

序言

在這篇文章中,為簡單起見我重點說下非空檢查,但是這樣做很容易讓被理解成邊緣情況

非空檢查結構

假設我們有一個簡單的應用程序,它顯示了一個運動員的list

public void showPlayers(List<Player> soccerPlayers) {// some awesome code here }

在一個正常的場景中,這將可以工作,但如果該list為空的時候會發生什么呢? 顯然可以添加一個臭名昭著的非空檢查

public void showPlayers(List<Player> soccerPlayers) {if (soccerPlayers == null || soccerPlayers.isEmpty()) return;// some awesome code here }

所有都搞定了! 哦,等一下…… list也可以是空的

public void showPlayers(List<Player> soccerPlayers) {if (soccerPlayers == null || soccerPlayers.isEmpty()) return;// some awesome code here }

那五層的結構的 soccerPlayers 下面通過UI怎么辦? 我們還應該在那些層中的每一層重復我們的檢查嗎? 不知不覺間,你就會覺得非空檢查無處不在!

非空檢查問題

顯然,明顯非空檢查代碼雜亂。 但這并不是唯一的問題! 因為一旦你習慣使用它們,你將使他們無處不在!

public void showPlayers(List<Player> soccerPlayers) {if (soccerPlayers == null) return;if (myRecyclerView == null) return;if (myRecyclerView.getAdapter() == null) return;// some awesome code here }

即使你不需要他們,你仍然將它們添加! 讓它沉在一秒鐘…… 這里的問題是什么?

“無害的”空檢查可以輕易地掩蓋一個更大,更基本的問題

首先出現 soccerPlayers 的地方實際上可以是空的嗎? 或者它是你應用程序里較低級別的響應,以返回一個空的list? 當soccerPlayers 實際上是空的時候會發生什么呢? 一定是展示給用戶一個完全空白的屏幕,對吧?

后者實際上意味著你的應用程序將默默的停止工作在生產環境下而你沒有任何方式檢測他!

解決崩潰

如果一個app進入了不是設計想要的狀態,,它應該崩潰。 這沒有一般的處理方式。

這個方法不應該在理論上可以發生的每一個可能出現的地方都去檢查,相反, 方法不應該檢查他們的輸入每一個可能的場景,理論上可以發生。 相反,你應該仔細考慮實際會輸入什么,只有這樣的情況才去準備那樣做(非空檢查)。

如果你的app得到一個不是設計要的狀態的時候,難道你不想盡快知道到底發生了什么事情嗎

好,在來看看我們心愛的exceptions!

未處理的異常是偉大的,因為他們:

  • 通知你馬上要崩潰的應用
  • 高亮的問題,而不是靜靜的等待殺死
  • 有跟蹤記錄可以確定問題
  • 自動備份到你的崩潰報告

這顯然不意味著你的應用程序應該崩潰為您的用戶! 我想說的是,如果有一個問題在我的應用程序,我寧愿通過崩潰報告獲取,而不是不知道。

崩潰或者不崩潰對用戶的結果都是一樣的,他們的app程序有問題.

放心,你不會開始就讓更多的崩潰困擾用戶! 發布版本之前你還有幾個安全網:開發人員測試、QA部門,測試,分階段發布,……

所以即使有這個策略,你仍然可以得到99,9%崩潰免費用戶。

實用技巧

闡明這種方法并幫助您啟動實施:

  • 始終將您的app設計為對于您的控制之外的任何輸入都是穩健的:來自Web服務的響應,在UI中輸入的數據,傳入的意圖,
  • 確保應用中輸入的數據完整性。這種方式的無效數據(null,空,...)不能發生在你的應用程序的任何其他地方,你不必檢查它。 - 任何地方,你都不需要檢查。
  • 如果你不確定某個錯誤情況可能發生在某個地方,假設它不會!在測試過程中,如果你是對的你會發現(RuntimeException)
  • 如果某個方法在生產環境中無法調用,只能調用一次,...拋出IllegalStateException。
  • 在向所有用戶發布前,請務必進行徹底測試。在用戶之前做,你會遇到可怕的“崩潰”。

總結

不要害怕崩潰,你應該擁抱他們在你的應用程序中更快的發現錯誤。 崩潰不僅使錯誤立即可見,它們還提供了一種方便的通過stacktrace調試它們的方法。

轉載于:https://my.oschina.net/wenlongguo/blog/858712

總結

以上是生活随笔為你收集整理的为什么你的应用程序需要崩溃的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。