重構 (Refactoring) 學習心得筆記 – Clean Code

文章最後更新於 2024 年 10 月 3 日

Clean Code是什麼?

所謂的Clean Code,其實就是指一種工程師一看到會覺得:這樣的Code很乾淨、整潔、易懂,也就是在合理的時間,不用花非常多的心力即可以理解的程度,或是俗稱無瑕的程式碼,源自Robert Cecil Martin所著的同名書籍,有下列幾種特性:

Clean Code淺顯易懂

Clean Code是淺顯易懂的程式,不會有複雜的邏輯、糟糕的變數命名、過以肥大冗長、一次做太多事的classes或methods、不知道什麼意思的魔術數字(magic numbers)等等一些讓工程師一眼或短時間無法理解的程式。

Clean Code 應該:

  • 邏輯簡單明瞭
  • 變數命名恰當
  • 避免過於龐大或複雜的類別和方法
  • 不使用難以理解的魔術數字(magic numbers)

Clean Code不會有重覆的程式碼

如果你有重覆的程式分佈在不同的地方,那你每次更改,就需要記得哪裡也用了一樣的程式,一併做修改,這樣會大大降低了開發的效率,而且萬一漏改了,程式就很容易出現Bug,也同時增加了Debug的難度,初學者容易犯的錯就是Copy別邊做一樣事情的程式碼貼到自己開發的程式中來使用,便宜行事卻產生了技術債,增加未來維護的困難。

Clean Code 應該避免重複

  • 消除重複的程式碼片段
  • 提高開發效率和程式一致性
  • 降低 Bug 出現的機會和除錯難度

Clean Code以最小量的Classes、最少的操作去達到目的

這裡指的最小量Classes不是叫你去只寫一隻God Class然後做了全部的事,這會產生Bloater這個Code Smell,程式碼越少表示你要維護的程式就更少,更少的程式碼就表示相對會有更少的錯誤,邏輯上就是不說廢話,直接了當的把事做完,Keep it simple!

Clean Code 應該精簡且高效

  • 使用最少量的類別和操作來實現功能
  • 避免創建過於龐大的「上帝類別」(God Class)
  • 遵循「簡單即是美」的原則

Clean Code通過所有的測試

沒有辦法100%通過測試的程式就是Dirty Code,Clean Code是通過所有測試的,總不能說通過0%測試的程式很乾淨無瑕,是吧?

Clean Code 應該全面通過測試

  • 100% 通過所有測試是 Clean Code 的基本要求
  • 確保程式的穩定性和可靠性

Clean Code的維護成本很低,也很簡單

基本上如果你的程式都通過測試,而且是自動化的測試,那在維護上就會很容易,不用怕新增的功能搞壞了原本的功能,因為邏輯簡單明瞭的特性,降低了理解的難度而增加了開發的效率,也減少了維護的成本。

Clean Code 應該易於維護

  • 通過自動化測試來確保維護的簡易性
  • 降低理解難度,提高開發效率
  • 減少長期維護成本

參考資料

關於作者

卡哥
卡哥
我是Oscar (卡哥),前Yahoo Lead Engineer、高智商同好組織Mensa會員,超過十年的工作經驗,服務過Yahoo關鍵字廣告業務部門、電子商務及搜尋部門,喜歡彈吉他玩音樂,也喜歡投資美股、虛擬貨幣,樂於與人分享交流!