為透明性和可顯性而編碼 UNIX程式設計藝術學習筆記

2021-05-27 15:53:06 字數 754 閱讀 5507

透明性和可顯性同模組性一樣,主要是設計的特性而不是**的特性:

1、  程式呼叫層次中最大的靜態深度是多少?不考慮遞迴,為了建立心理模型來理解**的操作,人們將要呼叫多少層?這個應該不是實際的**呼叫層次。我現在傾向於小函式,所以呼叫層次會比較深。它這個應該是理解上的層次。

2、  **是否具有明顯,強大的不變性質?不變性質指軟體設計中各個操作都保持不變的特性。比如字串函式退出時,每個字串必須有乙個字串結尾符。

3、  每個api中各個函式的呼叫是否正交?或者是否存在太多的特徵標誌和模式位,使得乙個呼叫要完成多個任務?所謂的模式標誌linux函式有很多這樣的例子。完全避免模式標誌會導致api包含太多幾乎一模一樣的函式;當頻繁使用模式標誌更容易引數錯誤。

4、  是否存在一些順手可用的關鍵資料結構或全域性唯一的記錄器,捕獲了系統的高階狀態?這個狀態是否容易被形象化和檢驗,還是分布在各個全域性變數中,而難以找到?應該是程式的設計要有乙個主線,按照這個主線可以從巨集觀上掌握整個程式。

5、  程式的資料結構或分類和它們所代表的外部實體之間,是否存在清晰的一一對應關係?

6、  是否容易找到給定函式的**部分?不僅單個模組,函式,還有這個**,需要花多少精力才能讀懂?

7、  **增加了特殊情況還是避免了特殊情況?特殊情況間可能會有影響,而且,這是滋生bug的溫床。更重要的是,它是**難於理解。

8、  是否有魔鬼數字。

可以結合模組化編碼——unix程式設計藝術學習筆記學習,更加具有啟發性。

為透明性和可顯性而編碼 UNIX程式設計藝術學習筆記

透明性和可顯性同模組性一樣,主要是設計的特性而不是 的特性 1 程式呼叫層次中最大的靜態深度是多少?不考慮遞迴,為了建立心理模型來理解 的操作,人們將要呼叫多少層?這個應該不是實際的 呼叫層次。我現在傾向於小函式,所以呼叫層次會比較深。它這個應該是理解上的層次。2 是否具有明顯,強大的不變性質?不變...

類依賴項的不透明性和透明性

在 tdd 的實踐中,總是要考慮類的依賴項的透明性 transparent 和不透明性 opaque 進而採用合理的方式提高 的可測試性。我們先看段前置條件 以供後文使用。1 public inte ce iuserprovider25 6public class userprovider iuse...

AKKA文件(java版) 位置透明性

原文 譯者 小魚 2.6 位置透明性 前一章節描述了如何使用角色路徑來實現位置透明性。這乙個特性應該需要一些額外的說明,因為與之關聯的術語 transparent remoting 透明的遠端處理 在程式語言 平台和技術中的用法是不一樣的。2.6.2 透明方式被打破 對akka適用的,不一定適用於使...