從錯誤中學習
前兩天在推上看到馬斯克發了一張圖,主題是從錯誤中學習,如下:
讀完有點感觸,想起最近在重新用到的 Java 靜態測試工具SpotBugs
,昨天聽組內技術分享,突然想起來這個工具了,有興趣的可以看看Intellij 靜態程式碼掃描外掛 SpotBugs。
為什麼要說這個外掛呢,因為它本身能發現專案中大量不規範或者非最佳實踐的程式碼,堪稱程式碼 BUG 的百科全書,一般千行程式碼的不規範點都在 10 以上,當然其中大部分都是重複的。還有他能檢測出很多的效能問題,雖然都是小問題,比如冗餘的程式碼呼叫,無用的程式碼行,以及非效能最佳實踐的程式碼。
每次開啟SpotBugs
的報告,都能看到一推的紅色警告,然後翻一翻就能得到一些新的體會,也算是一種工作積累。
在我自學的過程中,深刻認識到現在的能力都是過往的 BUG 積累出來的。在無數個下班的夜裡,跟 BUG 戰鬥到天亮。吃一塹長一智,每次經過 BUG 的洗禮,都感覺自己水平上升了另外一個階段。沒掌握一個 Java 的知識點,至少遇到 10 次 error。在不斷嘗試的過程中也是能遇到無數個 error 才能確認完全掌握某個 API。這在我最近學習 Golang 的過程中依然適用。
最近在整理一份 Java 的教程中,就覺得大多數時候一個 API 正確的使用方式只有少量幾種,但是錯誤的方式卻成倍增加。而這些錯誤的方式其實都是隱藏的知識點。對於學習一門語言來說,即使 SDK 自帶的 API 呼叫也是很多變的。一般我都是先搜一個最佳實踐的程式碼,然後不斷嘗試換一個別的使用姿勢,這其中相當於擴充了這個知識點關聯的知識點了。而且透過不斷試錯和練習,也能加深自己對這個知識點的理解。
就我自己的經驗來講SpotBugs
屬於從別人的錯誤中學習,自己在學習過程中不斷試錯從自己的錯誤中學習。程式語言以及其生態圈中的各類框架都有非常多隱藏的 BUG,偶爾發現一個還是挺奇妙的。比如我之前寫過兩個 BUG:Math.abs() 求絕對值返回負值 BUG 分享、Intellij 執行 Java 程式啟動等待 BUG 分享。
圖中的第一項應當是人人都需要避免的,而後兩項距離過於遙遠,是在沒啥經驗。
別讓錯誤從手中悄悄溜走!
Have Fun ~ Tester !
- FunTester 測試框架架構圖初探
- 頗具年代感的《JMeter 中文操作手冊》
- 140 道面試題目(UI、Linux、MySQL、API、安全)
- 圖解 HTTP 腦圖
- 分享一份 Fiddler 學習包
- 測試之 JVM 命令腦圖
- 好書推薦《Java 效能權威指南》
- JSON 基礎
- Math.abs() 求絕對值返回負值 BUG 分享
- moco 框架介面命中率統計實踐
- 效能測試中集合點和多階段同步問題初探
- 利用 python+plotly 製作雙波源干涉三維影像
- 程式碼審查如何保證軟體質量
- 自動化如何選擇用例
相關文章
- 學習Rust 錯誤處理Rust
- Python學習之錯誤除錯和測試Python除錯
- 今天學習遇見的錯誤!!!(禁忌)
- 學習Web前端需要避免哪些錯誤Web前端
- Golang 學習筆記八 錯誤異常Golang筆記
- Golang 學習——error 錯誤處理淺談GolangError
- 2020-12-21 練習中的錯誤
- 物聯網學習教程—常見錯誤和程式除錯除錯
- Linux 學習錯誤點整理之網路配置Linux
- MySQL主從複製錯誤——列型別轉換錯誤MySql型別
- Python 3 學習筆記之——錯誤和異常Python筆記
- Ubuntu學習之apt-get update 升級錯誤Ubuntuapt-get
- rust學習十、異常處理(錯誤處理)Rust
- angular中ExpressionChangedAfterItHasBeenCheckedError錯誤AngularExpressError
- 檢查 Linux 檔案系統中的錯誤:透過案例學習 FSCK 命令Linux
- C中的匯流排錯誤和段錯誤
- MySQL 主從複製錯誤1837MySql
- 在 Istio 中除錯 503 錯誤除錯
- 學習方法的錯誤:瞎想、粗看與蠻幹
- Vben Admin 原始碼學習:狀態管理-錯誤日誌原始碼
- 如何解決apache 403錯誤問題?Linux學習教程ApacheLinux
- android開發中犯的小錯誤,不要學我!Android
- SqlServer 主從複製錯誤分析--20598SQLServer
- webpack 4.0 學習日誌(一)——配置方法以及錯誤解決Web
- eclipse中:The type java.lang.object cannot be resolved錯誤(jdk配置錯誤)EclipseJavaObjectJDK
- _findnext()除錯中斷,發生訪問錯誤,錯誤定位到ntdll.dll除錯
- grpc中的錯誤處理RPC
- 使用 GDB 從崩潰中檢查 Objective C 類(HandleDelegateSource 錯誤訪問)Object
- 從bootstrap原始碼中學習Sass(一)boot原始碼
- 01整合學習-概述、Bagging-隨機森林、袋外錯誤率隨機森林
- Python學習常見的錯誤有哪些?Python基礎入門Python
- 執行指令碼寫入中間表錯誤返回錯誤資訊指令碼
- 記 Vue3 學習中見到的一個語法檢查錯誤 (ts-plugin 1128)VuePlugin
- 【常見錯誤】--Nltk使用錯誤
- iis7.5錯誤 配置錯誤
- 《javascript高階程式設計》學習筆記 | 21.2.錯誤處理JavaScript程式設計筆記
- 學習Python容易犯的錯誤幫你避開它!Python教程分享Python
- (資料科學學習手札135)tenacity:Python中最強大的錯誤重試庫資料科學Python