目錄這本書講的是一件事:複雜性。處理複雜性是軟體設計中最重要的挑戰。它使系統難於構建和維護,並且常常使它們變慢。在這本書中,我試圖描述導致複雜性的根本原因,比如依賴性和模糊性。我已經討論了可以幫助您識別不必要複雜性(如資訊洩漏、不必要的錯誤條件或過於通用的名稱)的危險訊號。我已經介紹了一些您可以用來建立更簡單的軟體系統的一般思想,例如努力建立深入而通用的類,定義不存在的錯誤,以及將介面文件與實現文件分離。最後,我討論了製作簡單設計所需的投資心態。
所有這些建議的缺點是在專案的早期階段會產生額外的工作。此外,如果您不習慣考慮設計問題,那麼在學習良好的設計技術時,您將會更加慢下來。如果對你來說唯一重要的事情是讓你當前的**盡快工作,那麼考慮設計就像做苦工一樣,會阻礙你實現真正的目標。
另一方面,如果良好的設計是您的乙個重要目標,那麼這本書中的思想應該會使程式設計變得更有趣。設計是乙個令人著迷的難題:如何用最簡單的結構來解決特定的問題?探索不同的方法是很有趣的,發現乙個既簡單又強大的解決方案是一種很棒的感覺。乙個乾淨、簡單、明顯的設計是一件美麗的事情。
以下是本書中討論的最重要的軟體設計原則:
複雜性是遞增的:你必須為小事費心(見第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程...