Mike Lewis

脆弱的程式碼庫#

每個有業界經驗的人都一定曾經遇過這樣的專案:程式碼庫搖搖欲墜。系統的分解設計(factoring)很差,修改一個東西總是會破壞另一個不相關的功能。每次新增模組時,程式設計師的目標就是盡量少改動,並在每次發佈時屏住呼吸。這就像是用工字鋼玩**疊疊樂(Jenga)**來蓋摩天大樓——注定要出事。

系統需要「手術」#

改變讓人緊張的原因,是因為系統已經「生病」了。它需要醫生,否則只會越來越惡化。你已經知道系統哪裡有問題,但你害怕打破雞蛋來做蛋捲。一個熟練的外科醫生知道手術需要動刀,但也知道這些切口是暫時的,會癒合。 手術的最終結果值得初期的痛苦,患者會恢復到比手術前更好的狀態。

不要害怕你的程式碼#

不要害怕你的程式碼。暫時有東西壞掉又如何呢? 對改變的癱瘓性恐懼才是讓你的專案陷入困境的原因。投入時間重構將在專案的生命週期中多次回本。額外的好處是,你的團隊在處理這個系統的經驗讓大家都成為專家,知道它應該如何運作。運用這些知識,而不是怨恨它。

具體做法#

  • 重新定義內部介面,重組模組,重構複製貼上的程式碼
  • 透過減少依賴關係來簡化設計
  • 消除邊角案例來降低程式碼複雜度——這些案例往往源自功能耦合不當
  • 慢慢地將舊結構過渡到新結構,沿途測試。不要嘗試一次完成大重構——「一次搞定」會讓你在中途就想放棄

做那個不怕切除病灶、騰出空間讓系統痊癒的外科醫生。這種態度是有感染力的,會激勵其他人開始處理他們一直推遲的清理工作。

維護一份團隊認為值得處理的「衛生清單(hygiene list)」。讓管理層相信,即使這些任務不會產出直接可見的成果,它們也會降低成本並加速未來的發佈。永遠不要停止關心程式碼的整體「健康」。