軟體設計的哲學 第二十一章 結論

2022-02-27 23:01:29 字數 1030 閱讀 8915

目錄這本書講的是一件事:複雜性。處理複雜性是軟體設計中最重要的挑戰。它使系統難於構建和維護,並且常常使它們變慢。在這本書中,我試圖描述導致複雜性的根本原因,比如依賴性和模糊性。我已經討論了可以幫助您識別不必要複雜性(如資訊洩漏、不必要的錯誤條件或過於通用的名稱)的危險訊號。我已經介紹了一些您可以用來建立更簡單的軟體系統的一般思想,例如努力建立深入而通用的類,定義不存在的錯誤,以及將介面文件與實現文件分離。最後,我討論了製作簡單設計所需的投資心態。

所有這些建議的缺點是在專案的早期階段會產生額外的工作。此外,如果您不習慣考慮設計問題,那麼在學習良好的設計技術時,您將會更加慢下來。如果對你來說唯一重要的事情是讓你當前的**盡快工作,那麼考慮設計就像做苦工一樣,會阻礙你實現真正的目標。

另一方面,如果良好的設計是您的乙個重要目標,那麼這本書中的思想應該會使程式設計變得更有趣。設計是乙個令人著迷的難題:如何用最簡單的結構來解決特定的問題?探索不同的方法是很有趣的,發現乙個既簡單又強大的解決方案是一種很棒的感覺。乙個乾淨、簡單、明顯的設計是一件美麗的事情。

以下是本書中討論的最重要的軟體設計原則:

複雜性是遞增的:你必須為小事費心(見第11頁)。

工作**是不夠的(見第14頁)。

持續進行小額投資以改進系統設計(見第15頁)。

模組要深度封裝(見第22頁)

介面的設計應使最常見的用法盡可能簡單(見第27頁)。

對於乙個模組來說,擁有乙個簡單的介面比簡單的實現更重要(參見第55、71頁)。

通用模組更要深度封裝(見第39頁)。

將通用**和專用**分開(見第62頁)。

不同的層應該有不同的抽象(見第45頁)。

降低複雜性(見第55頁)。

定義不存在的錯誤(和特殊情況)(見第79頁)。

設計兩次(見第91頁)。

注釋應該描述**中不明顯的內容(參見第101頁)。

軟體的設計應該是為了便於閱讀,而不是便於書寫(見第149頁)。

軟體開發的增量應該是抽象的,而不是特性(見第154頁)。

JAVA第二十一章(小結)

1 遞迴 理解 1 方法定義中呼叫方法本身的現象 舉例 老和尚給小和尚講故事,我們學程式設計 2 遞迴的注意事項 a 要有出口,否則就是死遞迴 b 次數不能過多,否則記憶體溢位 c 構造方法不能遞迴使用 3 遞迴的案例 a 遞迴求階乘 b 兔子問題 c 遞迴輸出指定目錄下所有指定字尾名的檔案絕對路徑...

第二十一章 變換(七)

錨定規模 以下是一些螢幕截圖,顯示 從左到右 相對於左下角相對於右下角和相對於中心底部的縮放 如果您熟悉ios程式設計,則可以了解類似的anchorpoint屬性。在ios中,此屬性會影響定位和轉換中心。在xamarin.forms中,anchorx和anchory屬性僅指定轉換中心。這意味著xam...

第二十一章 變換(八)

旋轉 屬性旋轉螢幕表面上的可視元素。將 旋轉 屬性設定為以度為單位的角度 不是弧度 正角度順時針旋轉元素。您可以將 旋轉 設定為小於0或大於360的角度。實際旋轉角度是旋轉屬性模數360的值。元素圍繞相對於使用anchorx和anchory屬性指定的自身的點旋轉。planerotationdemo程...