面試官:你認爲什麼樣的架構纔是優秀的架構?

從實用角度來看,優秀的軟件架構不應該進行過度設計,如果設計複雜度較高,應考慮軟件維護者是否能接受這樣的架構設計,以及其可能帶來的長期維護成本。

軟件架構設計亦應堅固可靠,其可以應對內外界多種不同類型的攻擊,提供可靠準確的輸出,面對外界的變化上,應響應迅速及時,靈活可擴展。

同樣地,軟件架構也應該具備美觀性,整潔代碼易於閱讀,更易於維護,能使得維護者從直觀上對功能產生更清晰的認識,和更快速的處理變化。

《整潔代碼之道》一書中曾提起代碼整潔的優勢:

代碼質量與其整潔度成正比。乾淨的代碼,既在質量上較爲可靠,也爲後期維護、升級奠定了良好基礎。

優秀的軟件架構亦是組件抽象,沒有複雜依賴關係,易於擴展分離的。

美國著名軟件先驅Brad Fitzpatrick在建設LiveJournal,這個優秀的虛擬寫作社區之時,爲系統架構設計做出了非常多重要的決策。他在爲LiveJournal增加基礎設施時,常常會詢問自己,這個新增的基礎架構是否必須要和LiveJournal綁定在一起,這使他充分重視解決依賴關係。所以,他的分佈式高速緩存系統Memcached等都是抽象的,這些決定使他的系統沒有產生複雜的依賴關係,具有很高的擴展性和可維護性。

美國建築師路易·康在《靜謐與光明》中曾經提到:

一座偉大的建築物,按我的看法,必須從無可量度的狀況開始,當它被設計着的時候又必須通過所有可以量度的手段,最後又一定是無可量度的。建築房屋的唯一途徑,也就是使建築物呈現眼前的唯一途徑,是通過可量度的手段。你必須服從自然法則。一定量的磚,施工方法以及工程技術均在必須之列。到最後,建築物成了生活的一部分,它發生出不可量度的氣質,煥發出活生生的精神。

我們也可以用這段話,來描述一幢具有優秀的架構的軟件“摩天大樓”。

想全面系統地瞭解計算機軟件架構的知識,還可以參考《移動開發架構設計實戰》,掌握架構體系知識。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章