新書介紹
《編寫高質量代碼:改善c++程式的150個建議》是c++程式設計師進階修煉的必讀之作,包含的全部都是c++編碼的最佳實踐,從語法、編碼規範和編程習慣、程式架構和設計思想等三大方面對c++程式和設計中的疑難問題給出了經驗性的解決方案,為c++程式設計師編寫更高質量的c++代碼提供了150條極為寶貴的建議。每個問題都來自於實踐,都極具代表性,本書不僅以建議的方式正面為每個問題給出了被實踐證明為十分優秀的解決方案,而且還從反面給出了被實踐證明為不好的解決方案,從正反兩個方面進行了分析和對比。
《編寫高質量代碼:改善c++程式的150個建議》在邏輯上一共分為三個部分:語法部分涵蓋c++從c語言繼承而來的一些極為重要但又極容易被誤解和誤用的一些語法特性,從c語言到c++的改變,以及記憶體管理、類、模板、異常處理、stl等方面的內容;編碼習慣和編程規範部分則主要討論了如何提高程式的正確性、可讀性、程式性能和編碼效率方面的問題;程式架構和思想部分則從更高的高度對c++程式設計思維和方法進行了審視,給出了一些頗具價值的觀點和最佳實踐。
作者介紹
李健資深軟體開發工程師,畢業於中科院計算所,有多年C/C++開發經驗,積累了豐富的實踐經驗。曾經參與了國家“十一五”863項目、北京市文化創意項目、上海世博會項目等多個項目的大型軟體的架構、設計與開發。此外,對MPICH並行編程與高性能計算、腳本語言Lua、Android和iPhone等移動開發平台也有一定的研究。活躍於csdn和部落格園等技術社區,發表和分享了大量技術文章,深受網友歡迎。
目錄
前 言
第一部分 語法篇
第1章 從c繼承而來的
建議0:不要讓main函式返回void
建議1:區分0的4種面孔
建議2:避免那些由運算符引發的混亂
建議3:對表達式計算順序不要想當然
建議4:小心宏#define使用中的陷阱
建議5:不要忘記指針變數的初始化
建議6:明晰逗號分隔表達式的奇怪之處
建議7:時刻提防記憶體溢出
建議8:拒絕晦澀難懂的函式指針
建議9:防止重複包含頭檔案
建議10:最佳化結構體中元素的布局
建議11:將強制轉型減到最少
建議12:優先使用前綴操作符
建議13:掌握變數定義的位置與時機
建議14:小心typedef使用中的陷阱
建議15:儘量不要使用可變參數
建議16:慎用goto
建議17:提防隱式轉換帶來的麻煩
建議18:正確區分void與void*
第2章 從c到c++,需要做出一些改變
建議19:明白在c++中如何使用c
建議20:使用memcpy()系列函式時要足夠小心
建議21:儘量用newdelete代替mallocfree
建議22:靈活地使用不同風格的注釋
建議23:儘量使用c++標準的iostream
建議24:儘量採用c++風格的強制轉型
建議25:儘量用const、enum、inline替換#define
建議26:用引用代替指針
第3章 說一說“記憶體管理”的那點事兒
建議27:區分記憶體分配的方式
建議28:newdelete與new[]delete[]必須配對使用
建議29:區分new的三種形態
建議30:new記憶體失敗後的正確處理
建議31:了解new_handler的所作所為
建議32:藉助工具監測記憶體泄漏問題
建議33:小心翼翼地重載operator new operator delete
建議34:用智慧型指針管理通過new創建的對象
建議35:使用記憶體池技術提高記憶體申請效率與性能
第4章 重中之重的類
建議36:明晰class與struct之間的區別
建議37:了解c++悄悄做的那些事
建議38:首選初始化列表實現類成員的初始化
建議39:明智地拒絕對象的複製操作
建議40:小心,自定義拷貝函數
建議41:謹防因構造函式拋出異常而引發的問題
建議42:多態基類的析構函式應該為虛
建議43:絕不讓構造函式為虛
建議44:避免在構造析構函式中調用虛函式
建議45:默認參數在構造函式中給你帶來的喜與悲
建議46:區分overloading、Overriding及hiding之間的差異
建議47:重載operator=的標準三步走
建議48:運算符重載,是成員函式還是友元函式
建議49:有些運算符應該成對實現
建議50:特殊的自增自減運算符重載
建議51:不要重載operator&&、operator
……
第二部分 編碼習慣和規範篇
第三部分 程式架構和思想篇
媒體評論
在程式設計師中,曾經有一個廣為流傳的段子,一位程式設計師抱怨:“這段代碼是誰寫的?非傻即呆!”結果他在代碼結尾的注釋中發現,這正是自己幾年前的“傑作”。同樣的功能,實現的代碼可以千差萬別,大師級的程式設計師可能只需要寫兩行代碼,但程式卻近乎完美,一般的程式設計師可能會敲數百甚至數千行代碼,而且還漏洞百出。如何才能編寫出高質量的代碼?這是每個程式設計師都會關心問題。本書就如何編寫出高質量的C++代碼從語法、編碼規範和編程思想三大方面給出了大量的最佳實踐,極具參考價值。強烈推薦!
每個程式設計師都希望自己能編寫出優質而高效的代碼,但真正能做到的少之又少,因為這不僅需要對技術有深入的鑽研,而且需要大量經驗的積累。本書作者將自己和C++領域的前輩們在大量編程實踐中總結出來的經驗從語法、編碼習慣和規範、程式設計思想三個方面進行了分類梳理,一共總結出了150條極具參考價值的建議。如果能將本書的內容吃透並融會貫通,不僅能讓自己少走彎路,而且還能讓自己的編程功力大增。
——錢林松 C++技術專家,著有暢銷書《C++反彙編與逆向分析技術揭秘》
C++語言以多范型見長,掌握和套用都需要下不小的功夫。然而一旦學成,就如侯捷老師曾經說過的那樣有著“妙用無窮”的旨趣和力量。本書嘗試從語言、編程規範和程式設計思想三個方面對C++編程中的疑點和難點進行了歸納與分析。實例豐富,語言通俗易懂,為C++程式設計師巧學和妙用C++指點迷津。這表明國內的作者已經開始擺脫人云亦云的思想枷鎖,而開始進行獨立思考和寫作的實踐,這是非常難得而寶貴的。希望讀者們能夠從本書中學有所獲。
——高博 盛大創新院技術骨幹、知名譯者(譯有《設計原本》等多本經典著作)