核心概念#
軟體開發幾乎不受物理法則影響,但熵(entropy)的無情增加卻深深影響著我們。
熵是物理學中指「系統中的混亂程度」的術語。熱力學定律保證宇宙中的熵趨向最大值。
當軟體中的混亂增加時,我們稱之為「軟體腐敗」(software rot)。
有些人用樂觀術語「技術債」(technical debt)稱呼它,暗示總有天會還清。但大概不會。
無論名稱如何,債和腐敗都可能不受控制地蔓延。
破窗理論#
影響軟體腐敗的因素很多,最重要的是專案的心理狀態或文化。
即使你是個人團隊,專案的心理也是非常微妙。
在內城區,有些建築物漂亮整潔,有些卻是腐朽廢墟。
犯罪學和城市衰敗的研究者發現了一個觸發機制——一扇破窗。
一扇未修繕的破窗會讓居民產生被遺棄感。然後另扇窗戶被打破、人們開始亂丟垃圾、塗鴉出現、嚴重的結構損壞開始。
心理學家的研究表明,絕望感是會傳染的。
忽視一個明顯壞掉的情況會強化「什麼都修不好」的想法,形成惡性循環。
Tip 5 - Don’t Live with Broken Windows(不要容忍破窗)
不要留下「破窗」(糟糕的設計、錯誤的決定或低品質的程式碼)而不修繕。
發現一個就修一個。如果沒有足夠時間適當修復,就封住它
——註解掉有問題的程式碼、顯示「未實作」訊息,或替換成假資料。
採取某些行動來防止進一步損害。
我們見過乾淨、功能正常的系統一旦窗戶開始破裂就會迅速惡化。
忽視比任何其他因素都更能加速腐敗。
首先,不要造成傷害#
有個故事是關於一位極其富有的人,他的房子裡擺滿了無價古董。
有天掛毯著火了。消防隊衝進來——但拖著水管進屋前,
他們先在前門和火源間鋪了一張墊子。他們不想弄髒地毯。
這就是軟體的做法:不要因為出了危機就造成附帶損害。一扇破窗就太多了。
技巧: 如果你發現自己在一個程式碼乾淨優雅的專案中,你會格外小心不去弄亂它。
即使面臨截止日期,你也不想成為第一個製造混亂的人。告訴自己:「沒有破窗。」
相關章節#
- Topic 10,正交性
- Topic 40,重構
- Topic 44,命名