什麼是設計與結構 (What Are Design and Architecture) #
在軟體開發領域,人們常試圖區分「架構(Architecture)」與「設計(Design)」。 通常認知是:架構屬於高層次策略,而設計屬於低層次細節。但在 Uncle Bob 眼中,這種區分沒有意義。
一、破除迷思:兩者本是同根生 #
- 沒有界線: 「架構」與「設計」間沒有明確邊界
- 連續體: 它們是同個整體的一部分
- 低層次的細節(設計)是用來支撐高層次決策(架構)
- 就像建築藍圖,既包含整體房屋形狀(架構),也包含插座與開關的具體位置(設計)。兩者共同構成一份完整指南
二、軟體架構的終極目標 #
若要評估一個軟體架構的好壞,只有一個核心指標:人力成本。
軟體架構的目標: 「由最小化建置和維護該系統所需的人力資源來決定。」 (The goal of software architecture is to minimize the human resources required to build and maintain the required system.)
- 好的設計: 隨著系統規模擴大,新增功能所需的人力成本保持穩定
- 壞的設計: 隨著系統規模擴大,新增功能所需的人力成本呈指數級上升
三、混亂的代價:龜兔賽跑的啟示 #
很多開發團隊都有過這經歷:專案初期進展神速,但隨著時間推移,開發速度像懸崖般墜落。
1. 混亂的特徵 (The Signature of a Mess) #
- 生產力崩跌: 隨著發布版本(Release)增加,開發團隊的生產力趨近於零
- 成本飆升: 公司為挽救生產力,投入更多人力,但新人加入往往讓混亂加劇(因他們不熟悉原本設計,且製造更多通訊成本), 導致「每行程式碼的成本」(Cost per line of code)天文數字般成長。
2. 關於速度的謬誤 #
開發者常有種錯覺:「先把功能做出來(Go fast),再來整理程式碼(Clean it up later)」
- 現實: 「以後」永遠不會來
- 真相: 製造混亂永遠不會比保持整潔快。無論是短期還是長期,混亂總會讓你變慢
四、結論:唯一出路 #
對那些想要「快」的管理者和開發者,Uncle Bob 給出全書最重要的一個結論:
「要走得快的唯一方法,就是走得好。」 (The only way to go fast, is to go well.)
唯有保持架構品質,才能在專案中後期依然保持穩定開發速度。這不是為了追求完美藝術品,而是為了經濟效益。