iT邦幫忙

2024 iThome 鐵人賽

DAY 14
1
IT 管理

30天從版控到code review的實踐指南系列 第 14

Day 14. Clean Code 介紹:易讀性、可維護性、團隊效率。

  • 分享至 

  • xImage
  •  

來到 30 天系列文章的中半段,接下來將以 code review 為主軸,透過範例說明實作 code review 的方法。在介紹 code review 之前,先簡單介紹 clean code 對 code review 的重要性。

什麼是 clean code?


說到 Clean Code 就必須提到由 Robert C. Martin 所著的《無瑕的程式碼》(Clean Code: A Handbook of Agile Software Craftsmanship)這本書,著重於如何撰寫清楚、易於理解且具可維護性的程式碼。以下歸納該書對於 Clean Code 的撰寫原則介紹:

  • Meaningful Names
    命名 variablesclassesfunctions 時,選擇有意義的名稱,讓程式碼可讀,易於理解。
  • Functions
    撰寫簡潔、單一責任的函數(Single Responsibility Principle),讓函數簡短、專注做一件事。
  • Comments
    強調註解的重要性,並且只有在必要時才寫上註解,應避免用註解來彌補程式碼的漏洞。
  • Formatting
    程式碼格式的重要性,包含整體的一致性、縮排、空行等,讓程式碼易於閱讀。
  • Objects and Data Structures
    闡述物件導向的程式碼撰寫方式,物件與數據結構之間,如何正確設計物件和數據結構。
  • Error Handling
    在程式碼中應有效地處理錯誤,設計透過例外和返回值來處理異常情況。
  • Boundaries
    處理應用程式的邊界問題,尤其是與外部系統、第三方套件的整合,以及如何隔離這些邊界。
  • Unit Tests
    強調單元測試的重要性,並提供了如何編寫可測試代碼和有效測試案例的指南。
  • Classes
    類別的設計原則,應使類別保持單一責任,多功能的類別需進行拆分和重構。
  • Systems
    關於軟體或系統的設計與管理,強調將系統模組化、分層次設計以增強維護性和靈活性。
  • Emergence
    遵循簡單的設計規則,如測試驅動開發(Test-Driven Development, TDD)、避免重複(DRY Principle)程式碼,來呈現乾淨的設計。
    • TDD:強調在開發功能程式碼之前,先構想測試情境。
      • 流程:
      1. 撰寫可測試失敗的案例(Red):首先寫一個失敗的測試案例,用來驗證程式某個具體功能的預期行為。
      2. 撰寫程式碼可測試成功的功能(Green):撰寫測試案例程式碼來讓測試通過,滿足測試的功能。
      3. 重構程式碼(Refactor):在確保所有測試都通過的前提下,對程式碼進行重構,以提高結構和可讀性,同時保持可通過測試。
  • Concurrency
    闡述如何處理同一時間內執行多個任務的撰寫方式,降低出錯的風險,並維護程式碼的清晰邏輯與結構。
    • Concurrency Programming 目標是讓應用程式在多任務環境下能夠更好地利用系統資源。
    • 什麼是 Concurrency Programming:
      1. 多任務處理:允許程式同時處理多個任務。例如,程式可以一邊下載文件,一邊處理user 輸入資訊。
      2. 非同步操作:不一定是依賴前一個任務完成才能繼續執行,可以透過非同步方式來調用某些任務,而不用等待其完成。
      3. 多執行緒或進程:並發編程通常涉及使用多個執行緒(threads)或進程(processes),每個執行緒或進程可以獨立運行一個任務。
      4. 資源共享:常常需要共享資源(如 variables、數據結構等),因此需要使用鎖(locks)、信號量(semaphores)等機制來避免資源競爭和數據不一致的問題。
      5. 提高性能:可以更有效地利用多核心 CPU,允許多個任務同時在不同的核心上運作,提高系統運作速度。
    • 與 parallel 比較:
      • parallel:多個任務或過程同時在不同的處理單元(如多核心處理器)上運行,真正實現同時執行。
      • Concurrency:強調在看似同時進行的任務間進行快速切換。Concurrency 的挑戰在於,如何安全地處理多個任務之間的相互影響,如避免死鎖、競爭條件等問題。

Clean Code 目標


Clean Code 的目標是撰寫出易於理解、維護和可擴充的程式碼。透過簡潔的設計與清晰的邏輯結構,Clean Code 不僅能提升程式碼的穩定性與可靠性,還能有效減少 bug 的發生。以 Clean Code 的撰寫程式碼方式能增進團隊協作,減少溝通障礙與開發成本。由於程式碼結構清晰、職責單一,Clean Code 讓開發者在重構程式碼時更加輕鬆,並且能夠更快地提升系統性能或加入新功能。

Clean Code 對 Code Review的重要性


Clean Code 在 Code Review 中的重要性體現在提升 review 效率和減少溝通障礙。Clean Code 結構清晰、命名直觀,使 Reviewer 能迅速理解 code 意義,從而更快識別問題。這不僅促進知識共享,提高團隊的技術能力,還能確保程式碼符合設計原則,減少錯誤和增加技術負債。此外,清晰的程式碼便於重構,增加維護性和可擴展性,並鼓勵建立良好的測試習慣,進一步維持程式碼穩定。Clean Code 增強了 Code Review 的效果,促進了團隊的高效合作和程式碼品質的提升。


上一篇
Day 13. Git 操作入門:實作自動化加Release 版號(GitHub Actions)-下篇。
下一篇
Day 15. Code Review 原則介紹
系列文
30天從版控到code review的實踐指南30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言