《代碼大全2》讀書心得

來源:互聯網
上載者:User

花了近2個月的時間,看完了這本《代碼大全》第二版。真是一本好書哇,看完之後覺得還有很多值得回味的地方,而且每部分之後作者還推薦了不少經典書籍。所以,作個讀書心得,備查。

全書的主題是軟體構建,關於軟體構建問題的方方面面均有涉及,共分7個部分,從軟體構建前期準備,到語言層的一些問題,再到代碼完善,系統考慮以及軟體工藝等等。以下分別進行簡單說明。

 

第一部分是打好基礎,本部分主要是軟體構建前期的工作,以及對一些基本概念的介紹,具體包括如何選擇程式設計語言和構建實踐方法,如何理解軟體開發的過程。軟體開發本質上說就是工程,書中用建築工程對其作比喻。不過由於軟體產品本身的特性,使其需求產生變化的可能性很大,因而也產生一系列需要額外考慮的問題(否則的話,直接套用現在的工程方法就OK了)。

 

第二部分是建立高品質的程式,第三部分是變數,第四部分是語句。這三個部分是對語言層進行說明。

第二部分從整個程式的角度,包括構建類的考慮因素,建立子程式需要注意的地方,以及如何進行防禦式編程。個人以為防禦式編程是很重要的,不光是可以保證程式現在的正確性,同時也可以較長時期保證程式不至於出現大的問題。由於防禦式編程,所以可以在出現問題之後,較快的確定問題所在甚至是處理部分問題。這個實現技術主要是異常處理機制,斷言等等。實際上一個真正強大的軟體大部分的邏輯應該是異常邏輯,只是解決正常工作情況的程式,不能稱之為軟體,其魯棒性遠遠沒有達到要求。

第三部分是變數,這是全書描述的最細微的單元。主要包括如果對變數命名,變數與資料的綁定時間,基本的資料類型以及一些不常見的資料類型,比如指標、全域變數等等。變數命名是有多種方法的,用哪種無所謂,關鍵是要統一。變數與資料的綁定時間,這個問題我以前沒有系統考慮過。書中的觀點是綁定時間越滯後,則系統越靈活。這個我贊同。寫入程式碼到程式中的,是直接賦予數值的常量,除非修改源碼,否則不變;編譯時間刻確定的,是一些靜態變數;已耗用時間確定的,就難說了,可能是從I/O獲得,也可能是從記憶體獲得。其它是介紹基礎資料型別 (Elementary Data Type),在此不贅述。

第四部分是語句,這是構建程式主體的基本構成單元,比變數又高了一級。這部分主要描述語句的組織圖,比如直線型、迴圈控制、條件控制、表驅動等。一般的方法比如條件迴圈等等,大部分情況下可見。表驅動,我是不常見的,應該是對程式邏輯的高度概括,並且高度靈活化。這個只在寫編譯器課程實踐代碼的時候簡單運用過。

 

第五部分是代碼改善,這部分包括以下幾個主題,協同、測試、調試、重構、調整。這裡的測試是開發人員測試,應該是指單元測試了,現有很多合適的工具,比如NUnit、CppUnit、JUnit等等。調試主要痛點在於尋找和定位問題,解決問題雖然也不容易,但需要的是遠見,因為再不濟,總會存在一種打補丁的方法可以臨時解決問題。重構和代碼調整是我近期需要關注並且不斷提高自己的主題。這兩個技術的運用,可以較好的彌補前期代碼設計不足所帶來的隱患。代碼調整的目標是進行效能最佳化。這需要考慮方法以及後果,書中有一個很重要的觀點是,往往表面看起來有效最佳化卻並不有效,尤其是你看似整潔不重複的代碼,卻還不如一個重複代碼執行效率高。要達到這一步,需要在每次的調整後進行效能測試,以判定效能是否最佳化。

 

第六部分是系統考慮,這部分是對軟體管理方面的考量,具體包括程式規模對構建的影響,如何去管理構建過程,如何整合模組,以及介紹軟體構建的工具。這部分內容像是給Manager準備的哈,現在的我,需要在多重專案中逐步體會。

 

第七部分,全書最後一部分,講述軟體工藝。軟體說到底,也就是一個產品,只不是產品的形式與一般不同。一部分是構建出來的可執行程式,一部分是完整的軟體源碼。對於源碼的書寫,就涉及到工藝了,不同層次的人寫出來的代碼是完全不一樣的。水平高低暫且不論,單是注釋的規範整齊程式,就可見一斑。這部分主要對代碼的布局,如何寫注釋,個人性格對代碼書寫的影響等方面進行說明。全書最後一章是好書推薦。

 

OK。總結到此。之後在構建方面,我需要繼續關注重構和代碼調整一類的內容,以及系統架構等等。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.