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