清除java_如何在Java地毯下有效地清除问题
清除java
因為軟件錯誤可能使我們在開發人員面前看起來很糟糕,并導致其他人對我們的想法減少,所以最好避免編寫錯誤,快速識別和修復錯誤或掩蓋我們的錯誤。 有許多博客文章和文章討論如何避免錯誤以及如何識別和修復錯誤,因此,在這篇博客文章中,我將介紹一些在地毯下掃除Java代碼庫中問題的最有效策略。
吞咽檢查異常
當我們不小心在代碼中引入了錯誤時,異常是讓我們放棄的事情之一。 在方法上聲明throws子句或catch選中的Exception也很麻煩。 解決這兩個問題的方法是,在可能引發該異常并且什么也不做的情況下,簡單地捕獲該異常(即使它是RuntimeException )。 這樣可以使API簡潔明了,無論如何,對已檢查的異常幾乎沒有辦法。 通過不對其進行記錄或執行任何操作,甚至沒有人需要知道它曾經發生過。
注釋掉或刪除不滿意的單元測試
失敗的單元測試可能會分散注意力,使您難以確定新功能何時破壞了測試。 當我們通過代碼更改破壞了某些內容時,它們還可以顯示。 注釋掉這些失敗的單元測試將使單元測試報告更整潔,并使查看他人的新功能是否破壞單元測試變得更加容易。
在基于JUnit的單元測試中使用
注釋掉失敗的單元測試似乎很令人厭惡,因此另一個可能更令人愉悅的選擇是使用@Ignore批注來注釋基于JUnit的失敗單元測試方法。
完全刪除個別測試
如果用@Ignore注釋掉一個損壞的測試或用@Ignore注釋一個損壞的測試是不令人滿意的,因為有人仍然可以檢測到我們已經破壞了一個單元測試,我們可以簡單地完全刪除有問題的單元測試。
注釋違規斷言
我們不必注釋掉或刪除整個測試。 它就像在單元測試方法中注釋掉或刪除assert語句一樣簡單。 該方法每次都可以成功執行并運行,因為沒有斷言意味著沒有辦法失敗。 當單元測試方法非常長且令人費解,因此不容易斷言缺乏斷言時,這尤其有效。
分散無用和冗余測試的噪音
注釋單元測試,使用@Ignore注釋基于JUnit的單元測試,甚至刪除單元測試對于在Java底下掃除問題的策略可能也太明顯了。 為了使這些變得不那么明顯,另一種有效的策略是在同一個單元測試類中編寫許多不必要的和多余的測試方法,以便看起來正在進行全面的測試,但是實際上只有一小部分功能(我們知道的子集是工作)正在測試中。
編寫單元測試,即使不正確,也可以“證明”您的代碼是正確的
我們可以利用以下事實:單元測試只能測試單元測試的作者認為被測軟件的預期行為,從而編寫可證明我們的代碼正確的單元測試。 如果提供2和2時,將兩個整數相加的代碼意外返回5的和,則我們可以簡單地將單元測試中的預期結果也設置為5。會顯示漂亮的單元測試報告,而不必是明智的。
避免記錄詳細信息
日志可能會暴露一個人的軟件問題,而應對這種風險的有效方法是完全不進行日志記錄,僅記錄日常操作和結果,并在記錄的消息中保留詳細信息(尤其是上下文)。 平凡的細節記錄過多也會掩蓋任何可能揭示我們代碼弱點的更有意義的消息。
避免使用描述性的
描述性的toString()方法可能會過多地揭示任何給定實例的狀態,并揭示我們的錯誤。 不重寫Object.toString()會使識別問題和將問題與任何給定的代碼或開發人員相關聯變得更加困難。 跟蹤問題所需的額外時間使您有更多時間轉到下一個項目,然后才發現是您的代碼有問題。 如果編寫的Java類使用描述性的toString()擴展了類,則可以在擴展類中重寫該方法以不執行任何操作(有效地刪除可能導致問題的toString()輸出)。 如果您希望它看起來像從未在繼承層次結構中實現過,請確保擴展類的toString()方法返回System.identityHashCode(this) 。
不要讓
NullPointerException可能是Java開發人員處理的最常見的異常。 這些特別危險,因為它們通常會揭示代碼的弱點。 try僅包裝每一行代碼的一種策略– catch并吞下異常(包括NPE)。 另一個不太明顯的策略是通過從不返回或傳遞null來避免NPE。 有時,可以使用明顯的默認值代替null (例如,空的String或集合),但有時我們必須更具創造力,以避免使用null 。 在此處可以使用“默認”非null值代替null 。 關于如何處理此任意非null默認值,有兩種思路。 一種方法是使用數據集中最常見的值作為默認值,因為如果無論如何還是很常見,當出現更多的該值并且您更有可能擁有看起來像這樣的代碼時,可能不會注意到它。處理該共同價值而無任何意外。 另一方面,如果您擁有一個幾乎從未使用過的值,那么它可以成為一個很好的默認值,因為受它影響的代碼(尤其是經過良好測試的代碼)可能比通常期望的值少。
結論
當我回顧這些策略以掃除底層Java代碼問題時,我注意到了一些重復出現的主題。 就暴露我們軟件的弱點而言,異常,日志記錄和單元測試特別麻煩,因此,有效地“發現我們的足跡”的大多數方式都與異常,日志記錄和單元測試的處理有關就不足為奇了。
翻譯自: https://www.javacodegeeks.com/2017/04/effectively-sweep-problems-rug-java.html
清除java
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的清除java_如何在Java地毯下有效地清除问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: forge开发_使用Forge,Wild
- 下一篇: Word文档怎样延长下划线word下划线