《代码大全2》读书笔记 Week2
《代碼大全2》第四、五章
?????? 第四章“關鍵的‘構建’決策”主要有以下三要點:1.每種編程語言都有優點和缺點,程序員應根據需要選擇編程語言,盡量選擇熟悉的語言以提高生產效率。作為一種表達工具,編程語言當然也會影響到使用者的思維,然而大多數重要的編程原則并不依賴與特定的語言,而是使用語言的方式。作者提倡“深入一種語言去編程”,當選擇的語言缺乏構件或者其他問題時,我們不應該被語言的可行性束縛住,而是試著發明自己的編碼約定、類庫等去彌補它。2. 高質量的軟件工程強調“架構的概念完整性”與其“底層實現”之間的關系,各個具體部件都能反映出架構的內涵。這要求我們,尤其是團隊合作時要對變量名稱、類名稱、子程序名稱、注釋約定等底層細節有合理地統一規定,以避免程序充斥著不同的風格和隨意的變化,從而程序員能夠更好地關注本質問題。3.在技術浪潮前期與后期,編程的環境和難度是截然不同的,對此應該因時適宜地調整開發的策略。
??????? 第五章“軟件構建中的設計”內容非常豐富,值得仔細閱讀。以下只對部分要點做分析概括。要理解設計的出發點和最終目標,不得不先理解軟件的首要技術使命:管理復雜度。在書中,作者暗示復雜度來源于兩種難題:偶然性與本質性難題。偶然性與事物的偶然、非本質屬性關聯,已經在編程語言和編程工具數十年的進化中得到了較好的解決。而本質性問題的求解進展則緩慢得多,本質性的困難來源于很多方面,概括來說是在復雜、無序的現實世界中精確而完整地識別出各種依賴關系并給出一套解決方案,而人們對現實世界中各種實體以及運行規律還未參透,這就增加了軟件開發的本質性困難。 從管理復雜度這個首要使命出發,作者列出了一些理想的設計特性:最小的復雜度、易于維護、松散耦合、可擴展性、可重用性、高扇入、低扇出、可移植性、精簡性、層次性等等。要實現以上設計特性,其中,層次化設計顯得尤為重要。作者給出的基本層次是:軟件系統 -> 子系統和包 -> 包中的類 -> 類中的數據和子程序 -> 子程序內部。接著作者花了大量篇幅介紹啟發式的設計方法,其中最讓我印象深刻的有兩點,一是形成一致的抽象和信息隱藏概念。兩者其實是相輔相成的,為層次化設計服務,而且他們展示了面向程序編程和面向對象編程的顯著差別。分而治之——或者說模塊化思想,在兩種編程中都舉足輕重,但面向過程側重于,也許只能支持過程(具體來說函數)和自定義數據類型的封裝,而面向對象編程在引入了類和對象的概念后將模塊化思想進一步延伸,使得能夠形成統一抽象的范圍得到了擴大,比如說可反復使用的一整套操作在接口中定義,允許某些操作的事物定義為一個類,類之間還可以繼承、多態。而信息隱藏是結構化程序設計與面向對象設計的基礎之一,這個概念在實現類與類或子程序與子程序的松散耦合、提高擴展性等設計特性中都有非常大的價值。
轉載于:https://www.cnblogs.com/VIAROW/p/8616505.html
總結
以上是生活随笔為你收集整理的《代码大全2》读书笔记 Week2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unitycrashhandler怎么用
- 下一篇: Thecarbsomehowdragge