iT邦幫忙

DAY 18
1

程式隨手寫系列 第 18

如何閱讀code(x)

  • 分享至 

  • xImage
  •  

系統構架
++++++++++++++
182.一個系統可以(在重大的系統中也確實如此)同時出多種不同的構架類型. 以不同的方式檢查同一系統|分析系統的不同部分|或使用不同級別的分解, 都有可能發現不同的構架類型.
183.協同式的應用程序, 或者需要協同訪問共享信息或資源的半自治進程, 一般會採用集中式儲存庫構架.
184.黑板系統使用集中式的儲存庫, 存儲非結構化的鍵/值對, 作為大量不同代碼元件之間的通信集線器.
185.當處理過程可以建模|設計和實現成一系列的數據變換時, 常常會使用數據流(或管道—過濾器)構架.
186.在批量進行自動數據處理的環境中, 經常會採用數據流構架, 在對數據工具提供大量支持的平台上尤其如此.
187.數據流構架的一個明顯徵兆是: 程序中使用臨時文件或流水線(pipeline)在不同進程間進行通信.
188.使用圖示來建模面向對象構架中類的關係.
189.可以將源代碼輸入到建模工具中, 逆向推導出系統的構架.
190.擁有大量同級子系統的系統, 常常按照分層構架進行組織.
191.分層構架一般通過堆疊擁有標準化接口的軟件組件來實現.
192.系統中每個層可以將下面的層看作抽象實體, 並且(只要該層滿足它的需求說明)不關心上面的層如何使用它.
193.層的接口既可以是支持特定概念的互補函數族, 也可以是一系列支持同一抽象接口不同底層實現的可互換函數.
194.用C語言實現的系統, 常常用函數指針的數組, 表達層接口的多路復用操作.
195.用面向對象的語言實現的系統, 使用虛方法調用直接表達對層接口的多嘴復用操作.
196.系統可以使用不同的|獨特的層次分解模型跨各種坐標軸進行組織.
197.使用程序切片技術, 可以將程序中的數據和控制之間依賴關係集中到一起.
198.在並發系統中, 一個單獨的系統組件起到集中式管理器的作用, 負責啟動|停止和協調其他系統進程和任務的執行.
199.許多現實的系統都會博採眾家之長. 當處理此類系統時, 不要徒勞地尋找無所不包的構架圖; 應該將不同構架風格作為獨立但相關的實體
來進行定位|識別並了解.
200.狀態變遷圖常常有助於理清狀態機的動作.
201.在處理大量的代碼時, 了解將代碼分解成單獨單元的機制極為重要.
202.大多數情況下, 模塊的物理邊界是單個文件|組織到一個目錄中的多個文件或擁有統一前綴的文件的集合.
203.C中的模塊, 由提供模塊公開接口的頭文件和提供對應實現的源文件組成.
204.對象的構造函數經常用來分配與對象相關的資源, 並初始化對象的狀態. 函數一般用來釋放對像在生命期中佔用的資源.
205.對象方法經常使用類字段來存儲控制所有方法運作的數據(比如查找表或字典)或維護類運作的狀態信息(例如, 賦給每個對像一個標識符的
計數器).
206.在設計良好的類中, 所有的字段都應在聲明為private, 並用公開的訪問方法提供對它們的訪問.
207.在遇到friend聲明時, 要停下來分析一下, 看看繞過類封裝在設計上的理由.
208.可以有節制地用運算符增強特定類的可用性, 但用運算符重載, 將類實現為擁有內建算術類型相關的全部功能的類實體, 是不恰當的.
209.泛型實現不是在編譯期間通過宏替換或語言所支持的功能(比如C++模板和Ada的泛型包)來實現, 就是在運行期間通過使用數據元素的指針和函數的指針|或對象的多態性實現.
210.抽像數據類型經常用來封裝常用的數據組織方案(比如樹|列表或棧), 或者對用戶隱藏數據類型的實現細節.
211.使用庫的目的多種多樣: 重用源代碼或目標代碼, 組織模塊集合, 組織和優化編譯過程, 或是用來實現應用程序各種特性的按需載入.
212.大型的|分佈式的系統經常實現為許多互相協作的進程.
213.對於基於文本的數據儲存庫, 可以通過瀏覽存儲在其中的數據, 破譯出它的結構.
214.可以通過查詢數據字典中的表, 或使用數據庫專有的SQL命令, 比如show table, 來分析關係型數據庫的模式.
215.識別出重用的構架元素後, 可以查找其最初的描述, 了解正確地使用這種構架的方式, 以及可能出現的誤用.
216.要詳細分析建立在某種框架之上的應用程序, 行動的最佳路線就是從研究框架自身開始.
217.在閱讀嚮導生成的代碼時, 不要期望太高, 否則您會感到失望.
218.學習幾個基本的設計模式之後, 您會發現, 您查看代碼構架的方式會發生改變: 您的視野和詞彙將會擴展到能夠識別和描述許多通用的形式.
219.頻繁使用的一些模式, 但並不顯式地指出它們的名稱, 這是由於構架性設計的重用經常先於模式的形成.
220.請試著按照底層模式來理解構架, 即使代碼中並沒有明確地提及模式.
221.大多數解釋器都遵循類似的處理構架, 圍繞一個狀態機進行構建, 狀態機的操作依賴於解釋器的當前狀態|程序指令和程序狀態.
222.多數情況下, 參考構架只是為應用程序域指定一種概念性的結構, 具體的實現並非必須遵照這種結構.


上一篇
閱讀code(3)
下一篇
閱讀code(5)
系列文
程式隨手寫20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言