跳至主要内容

Tidy First - 小規模程式碼重構的藝術

· 閱讀時間約 4 分鐘
Bater Chen
Senior Full-Stack Engineer

想像一下,你正要深入理解一段看上去陌生程式碼片段,而它就像是口袋裡的耳機線纏繞一樣糾結。很令人沮喪,對吧?這就是 Tidy First 登場的時候了。這是 Kent Beck 所倡導的一種哲學,鼓勵開發者在處理行為變更之前,先對程式碼結構進行小幅度、有意識的改進。這不是關於大型重構專案,例如將單體架構拆分成微服務。相反地,它是關於超級小、超級可愛的微型重構——小而易於管理的調整,為更順暢的變更鋪路。

核心口訣是什麼?「先讓改動更容易,再進行容易的改動。」 透過專注於小型的程式碼結構改進,你減少了摩擦,為輕鬆的變動奠定了良好的基礎。讓我們來探索這種方法如何能夠改變你的程式設計體驗。

什麼是 Tidy First?

Tidy First 是關於漸進式的程式碼清理,讓後續的修改變得更容易。與大規模重構不同,這些變更是:

  • 小型的:小到可以融入你的日常工作流程,而不會打亂時程。
  • 結構性的:專注於程式碼組織,而非改變功能。
  • 頻繁的:理想情況下,一天發生多次。

目標是簡化程式碼庫,讓它對未來的變更更加友善。把它想像成在開始一個大專案之前整理你的桌子——一切都會變得更順暢。

Tidying 的具體方法

以下是一些應用 Tidy First 的具體方法:

  • 拆分大型函式:將龐大的函式分割成較小的區塊,即使只是用空行來增加清晰度。
  • 使用保護子句(guard clauses):用提前回傳取代巢狀的 if 語句,以簡化邏輯。
  • 提取解釋性的輔助函式:將一段程式碼提取到一個函式中,函式名稱反映其意圖,而非其實作方式。
  • 使用解釋性的常數/變數:用具名的常數或變數取代魔術數字或不清楚的值。
  • 改善註解:新增或移除註解,以澄清意圖,同時不讓程式碼變得雜亂。

這些技巧形成了一套 tidying 動作的詞彙,每一個都幫助你逐步削減複雜性。

為什麼 Tidy First 很重要

管理耦合度

Tidy First 的核心是關於降低耦合度——也就是一個程式碼元素的變更迫使其他元素跟著變更的程度。高耦合度會導致成本呈指數級增長,因為變更會在整個系統中產生連鎖反應。Tidying 涉及小幅度地降低耦合度,在足夠解耦以降低成本和避免過度工程之間取得平衡。

降低認知負擔

混亂的程式碼會增加認知負擔,迫使開發者花費額外的心智精力來解讀它。另一方面,組織良好的程式碼減少了上下文切換,幫助開發者保持在心流狀態——那個神奇的生產力巔峰區域。透過整理程式碼,你消除了摩擦點,使其更容易理解和修改,從而提升開發者體驗(DevEx)

促進測試驅動開發(TDD)

在 TDD 中,難以測試的程式碼庫可能會讓進度完全停滯。先進行 tidying 讓程式碼更具可測試性,讓你能夠在進行行為變更之前,無縫整合測試。

擴展選項

一個整潔的程式碼庫是可能性的組合。乾淨的程式碼、Tidy First 和 TDD 共同創造了一個更容易擴展和修改的系統。相反地,混亂的系統由於變更所需的風險和工作量,會限制選項。

Tidying 的人性面

Tidy First 的核心是關於作為程式設計師的自我尊重。當面對糾結的程式碼時,問題變成:我是否足夠重視自己,願意讓自己的工作變得更輕鬆? Tidying 是對未來生產力的投資,減少挫折感,為更順暢的程式設計過程鋪路。

結論

Tidy First 不僅僅是一種技術——它是一種心態。透過擁抱小型、頻繁的結構改進,你降低了耦合度、減輕了認知負擔,並創造了一個令人愉悅的程式碼庫。無論你是在為 TDD 做準備,還是只是讓你的程式碼更加友善,先進行 tidying 會讓你走向成功。所以,下次當你要深入進行變更時,暫停一下並問自己:我可以做什麼小小的 tidying 來讓這件事變得更容易? 未來的你會感謝現在的你。

祝你 tidying 愉快,願你的程式碼永遠乾淨,心流狀態永不中斷!