「演化架構」與「緊急設計」的核心在於將重要決策推遲至最後負責時刻。系列首篇建立共同語言:定義架構與設計、釐清演化與緊急的差異、剖析技術債務與複雜度本質、警惕過度一般性,為後續實戰奠基。
架構師角色辨析:Architectus Reloadus(唯圖不碼)vs Architectus Oryzus(深入代碼、促成共識),後者為演化架構關鍵推手。
設計涵蓋模式、重構、框架選型等日常決策。圖譜左端是大量預先設計(BDUF),右端是無設計硬幹,敏捷實踐在中間動態平衡——隨著開發演進設計,而非一成不變。
為趕工期採取權宜之計 = 借用未來時間。新功能成本 = 內在複雜度(本金)+ 債務利息(修補舊代碼)。圖示清晰展示:低債務系統新功能成本線性增長,高債務系統指數級爆炸。
三大偶發複雜度根源:時間壓力妥協、複製貼上、不可逆決策。對策:最後負責時刻決策、消除複製、保持選項開放。
Java 生態易陷入「為擴展而擴展」陷阱。一般性增加熵,讓每次變更更複雜。鐵律:You Ain't Gonna Need It——只實現當前需求,未來再擴展。把握擴展性與過度設計的微妙界線,是架構師核心功力。
本文鋪墊概念地基,後續每篇深入一到兩個具體主題並附代碼實戰:
目標:構建在變化中穩健演進的軟件系統。