切換語言為:簡體
掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

  • 爱糖宝
  • 2024-05-28
  • 2124
  • 0
  • 0

前言

對於大部分程式設計師來說,主要的工作時間是在開發和修復 Bug。

有可能修改了一個 Bug,會導致幾個新 Bug 的產生,不斷迴圈。

那麼,有沒有辦法能夠減少 Bug,保證程式碼質量,提升工作效率?

答案是肯定的。

如果能做到,我們多出來的時間,多摸點魚,做點自己喜歡的事情,不香嗎?

這篇文章跟大家一起聊聊減少程式碼 Bug 的 10 個小技巧,希望對你會有所幫助。

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

1、找個好用的開發工具

在日常工作中,找一款好用的開發工具,對於開發人員來說非常重要。

不光可以提升開發效率,更重要的是它可以幫助我們減少 Bug。

有些好的開發工具,比如:IDEA 中,對於包沒有引入,會在相關的類上面標紅。

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

並且 IDEA 還有自動補全的功能,可以有效減少我們在日常開發的過程中,有些單詞手動輸入的時候敲錯的情況發生。

2、引入 Findbugs 外掛

Findbugs 是一款 Java 靜態程式碼分析工具,它專注於尋找真正的缺陷或者潛在的效能問題,它可以幫助 Java 工程師提高程式碼質量以及排除隱含的缺陷。

Findbugs 運用 Apache BCEL 庫分析類檔案,而不是原始碼,將位元組碼與一組缺陷模式進行對比以發現可能的問題。

可以直接在 IDEA 中安裝 FindBugs 外掛:

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

之後可以選擇分析哪些程式碼:

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

檢視分析結果:

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

點選對應的問題項,可以找到具體的程式碼行,進行修復。

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

Findbugs 的檢測器已增至 300 多條,被分為不同的型別,常見的型別如下:

Correctness:這種歸類下的問題在某種情況下會導致 Bug,比如錯誤的強制型別轉換等。

Bad practice:這種類別下的程式碼違反了公認的最佳實踐標準,比如某個類實現了 equals 方法但未實現 hashCode 方法等。

Multithreaded correctness:關注於同步和多執行緒問題。

Performance:潛在的效能問題。

Security:安全相關。

Dodgy:Findbugs 團隊認為該型別下的問題程式碼導致 Bug 的可能性很高。

3、引入 CheckStyle 外掛

CheckStyle 作為檢驗程式碼規範的外掛,除了可以使用配置預設給定的開發規範,如 Sun、Google 的開發規範之外,還可以使用像阿里的開發規範的外掛。

目前國內用的比較多的是阿里的程式碼開發規範,我們可以直接透過 IDEA 下載外掛:

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

如果想檢測某個檔案:

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

可以看到結果:

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

阿里巴巴規約掃描包括:

  • OOP規約

  • 併發處理

  • 控制語句

  • 命名規約

  • 常量定義

  • 註釋規範

Alibaba Java Coding Guidelines 專注於 Java 程式碼規範,目的是讓開發者更加方便、快速規範程式碼格式。

該外掛在掃描程式碼後,將不符合規約的程式碼按 Blocker、Critical、Major 三個等級顯示出來,並且大部分可以自動修復。

它還基於 Inspection 機制提供了實時檢測功能,編寫程式碼的同時也能快速發現問題。

4. 用 SonarQube 掃描程式碼

SonarQube 是一種自動程式碼審查工具,用於檢測程式碼中的錯誤,漏洞和程式碼格式上的問題。

它可以與使用者現有的工作流程整合,以實現跨專案分支和提取請求的連續程式碼檢查,同時也提供了視覺化的管理頁面,用於檢視檢測出的結果。

SonarQube 透過配置的程式碼分析規則,從可靠性、安全性、可維護性、覆蓋率、重複率等方面分析專案,風險等級從 A~E 劃分爲 5 個等級;

同時,SonarQube 可以整合 pmd、findbugs、checkstyle 等外掛來擴充套件使用其他規則來檢驗程式碼質量。

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

一般推薦它跟 Jenkins 整合,做成每天定時掃描專案中 test 分支中的程式碼問題。

5、用 Fortify 掃描程式碼

Fortify 是一款廣泛使用的靜態應用程式安全測試(SAST)工具。

它具有程式碼掃描、漏斗掃描和滲透測試等功能。它的設計目的是有效地檢測和定位原始碼中的漏洞。

它能幫助開發人員識別和修復程式碼中的安全漏洞。

Fortify 的主要功能:

  • 靜態程式碼分析:它會對原始碼進行靜態分析,找出可能導致安全漏洞的程式碼片段。它能識別多種型別的安全漏洞,如 SQL 注入、跨站指令碼(XSS)、緩衝區溢位等。

  • 數據流分析:它不僅分析單個程式碼檔案,還跟蹤應用程式的數據流。這有助於找到更復雜的漏洞,如未經驗證的使用者輸入在應用程式中的傳播路徑。

  • 漏洞修復建議:發現潛在的安全漏洞時,它會為開發人員提供修復建議。

  • 整合支援:它可以與多種持續整合(CI)工具(如 Jenkins)和應用生命週期管理(ALM)工具(如 Jira)整合,實現自動化的程式碼掃描和漏洞跟蹤。

  • 報告和度量:它提供了豐富的報告功能,幫助團隊瞭解專案的安全狀況和漏洞趨勢。

使用 Fortify 掃描程式碼的結果:

掌握這10個小技巧讓程式設計師開發中減少80%的Bug!

一般推薦它跟 Jenkins 整合,定期掃描專案中 test 分支中的程式碼安全問題。

6、寫單元測試

有些小夥伴可能會問:寫單元測試可以減少程式碼的 Bug?

答案是肯定的。

我之前有同事,使用的測試驅動開發模式,開發一個功能模組之前,先把單元測試寫好,然後再真正的開發業務程式碼。

後面發現他寫的程式碼速度很快,而且程式碼質量很高,是一個開發牛人。

如果你後期要做系統的程式碼重構,你只是重寫了相關的業務程式碼,但業務邏輯並沒有修改。

這時,因為有了之前寫好的單位測試,你會發現測試起來非常方便。

可以幫你減少很多 Bug。

7、功能自測

功能自測,是程式設計師的基本要求。

但有些程式設計師自測之後,Bug 還是比較多,而有些程式設計師自測之後,Bug 非常少,這是什麼原因呢?

可能有些人比較粗心,有些人比較細心。

其實更重要的是測試的策略。

有些人喜歡把所有相關的功能都開發完,然後一起測試。

這種情況下,相當於一個黑盒測試,需要花費大量的時間,梳理業務邏輯才能測試完整,大部分情況下,開發人員是沒法測試完整的,可能會有很多bug測試不出來。

這種做法是沒有經過單元測試,直接進行了整合測試。

看似節省了很多單元測試的時間,但其實後面修復BUG的時間可能會花費更多。

比較推薦的自測方式是:一步一個腳印。

比如:你寫了一個工具類的一個方法,就測試一下。如果這個方法中,呼叫了另外一個關鍵方法,我們可以先測試一下這個關鍵方法。

這樣可以寫出 Bug 更少的程式碼。

8、自動化測試

有些公司引入了自動化測試的功能。

有專門的程式,每天都會自動測試,保證系統的核心流程沒有問題。

因為我們的日常開發中,經常需要調整核心流程的程式碼。

不可能每調整一次,都需要把所有的核心流程都測試一遍吧,這樣會浪費大量的時間,而且也容易遺漏一些細節。

如果引入了自動化測試的功能,可以幫助我們把核心流程都測試一下。

避免程式碼重構,或者修改核心流程,測試時間不夠,或者測試不完全的尷尬。

自動化測試,可以有效的減少核心流程調整,或者程式碼重構中的BUG。

9、程式碼審查

很多公司都有程式碼審查機制。

我之前也參與多次程式碼審查的會議,發現程式碼審查確實可以找出很多 Bug。

比如:一些程式碼的邏輯錯誤,語法的問題,不規範的命名等。

這樣問題透過組內的程式碼審查一般可以檢查出來。

有些國外的大廠,採用結對程式設計的模式。

同一個組的兩個人 A 和 B 一起開發,開發完之後,A 稽覈 B 的程式碼,同時 B 稽覈 A 的程式碼。

因為同組的 A 和 B 對專案比較熟,對對方開發的功能更有了解,可以快速找出對外程式碼中的一些問題。

能夠有效減少一些 Bug。

10、多看別人的踩坑分享

如果你想減少日常工作中的程式碼 Bug,或者線上事故、少犯錯、少踩坑。

經常看別人真實的踩坑分享,是一個非常不錯的選擇,可以學到一些別人的工作經驗,幫助你少走很多彎路。

網上有許多博主寫過自己的踩坑記錄,大家可以上網搜一下。

最後說一句,本文總結了 10 種減少程式碼 Bug 的小技巧,但我們要根據實際情況選擇使用,並非所有的場景都適合。

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.