出版時間:2011-12-31 出版社:機械工業(yè)出版社華章公司 作者:李健
Tag標(biāo)簽:無
內(nèi)容概要
《編寫高質(zhì)量代碼:改善c++程序的150個建議》是c++程序員進階修煉的必讀之作,包含的全部都是c++編碼的最佳實踐,從語法、編碼規(guī)范和編程習(xí)慣、程序架構(gòu)和設(shè)計思想等三大方面對c++程序和設(shè)計中的疑難問題給出了經(jīng)驗性的解決方案,為c++程序員編寫更高質(zhì)量的c++代碼提供了150條極為寶貴的建議。每個問題都來自于實踐,都極具代表性,本書不僅以建議的方式正面為每個問題給出了被實踐證明為十分優(yōu)秀的解決方案,而且還從反面給出了被實踐證明為不好的解決方案,從正反兩個方面進行了分析和對比。
《編寫高質(zhì)量代碼:改善c++程序的150個建議》在邏輯上一共分為三個部分:語法部分涵蓋c++從c語言繼承而來的一些極為重要但又極容易被誤解和誤用的一些語法特性,從c語言到c++的改變,以及內(nèi)存管理、類、模板、異常處理、stl等方面的內(nèi)容;編碼習(xí)慣和編程規(guī)范部分則主要討論了如何提高程序的正確性、可讀性、程序性能和編碼效率方面的問題;程序架構(gòu)和思想部分則從更高的高度對c++程序設(shè)計思維和方法進行了審視,給出了一些頗具價值的觀點和最佳實踐。
這是一本關(guān)于如何提高c++程序設(shè)計效率與質(zhì)量的工具書,希望書中的每條建議都能引起你的思考,對于有難度的內(nèi)容,建議大家消化理解,切勿死記硬背,同時也希望大家能悟出更好的解決方案。希望本書中的每條建議所傳遞的思想和理念能夠滲透到大家的編碼實踐中,進而幫助大家真正具備編寫高質(zhì)量c++代碼的能力。
作者簡介
李健
資深軟件開發(fā)工程師,畢業(yè)于中科院計算所,有多年C/C++開發(fā)經(jīng)驗,積累了豐富的實踐經(jīng)驗。曾經(jīng)參與了國家“十一五”863項目、北京市文化創(chuàng)意項目、上海世博會項目等多個項目的大型軟件的架構(gòu)、設(shè)計與開發(fā)。此外,對MPICH并行編程與高性能計算、腳本語言Lua、Android和iPhone等移動開發(fā)平臺也有一定的研究。活躍于CSDN和博客園等技術(shù)社區(qū),發(fā)表和分享了大量技術(shù)文章,深受網(wǎng)友歡迎。
書籍目錄
前 言
第一部分 語法篇
第1章 從c繼承而來的
建議0:不要讓main函數(shù)返回void
建議1:區(qū)分0的4種面孔
建議2:避免那些由運算符引發(fā)的混亂
建議3:對表達式計算順序不要想當(dāng)然
建議4:小心宏#define使用中的陷阱
建議5:不要忘記指針變量的初始化
建議6:明晰逗號分隔表達式的奇怪之處
建議7:時刻提防內(nèi)存溢出
建議8:拒絕晦澀難懂的函數(shù)指針
建議9:防止重復(fù)包含頭文件
建議10:優(yōu)化結(jié)構(gòu)體中元素的布局
建議11:將強制轉(zhuǎn)型減到最少
建議12:優(yōu)先使用前綴操作符
建議13:掌握變量定義的位置與時機
建議14:小心typedef使用中的陷阱
建議15:盡量不要使用可變參數(shù)
建議16:慎用goto
建議17:提防隱式轉(zhuǎn)換帶來的麻煩
建議18:正確區(qū)分void與void*
第2章 從c到c++,需要做出一些改變
建議19:明白在c++中如何使用c
建議20:使用memcpy()系列函數(shù)時要足夠小心
建議21:盡量用newdelete代替mallocfree
建議22:靈活地使用不同風(fēng)格的注釋
建議23:盡量使用c++標(biāo)準(zhǔn)的iostream
建議24:盡量采用c++風(fēng)格的強制轉(zhuǎn)型
建議25:盡量用const、enum、inline替換#define
建議26:用引用代替指針
第3章 說一說“內(nèi)存管理”的那點事兒
建議27:區(qū)分內(nèi)存分配的方式
建議28:newdelete與new[]delete[]必須配對使用
建議29:區(qū)分new的三種形態(tài)
建議30:new內(nèi)存失敗后的正確處理
建議31:了解new_handler的所作所為
建議32:借助工具監(jiān)測內(nèi)存泄漏問題
建議33:小心翼翼地重載operator new operator delete
建議34:用智能指針管理通過new創(chuàng)建的對象
建議35:使用內(nèi)存池技術(shù)提高內(nèi)存申請效率與性能
第4章 重中之重的類
建議36:明晰class與struct之間的區(qū)別
建議37:了解c++悄悄做的那些事
建議38:首選初始化列表實現(xiàn)類成員的初始化
建議39:明智地拒絕對象的復(fù)制操作
建議40:小心,自定義拷貝函數(shù)
建議41:謹防因構(gòu)造函數(shù)拋出異常而引發(fā)的問題
建議42:多態(tài)基類的析構(gòu)函數(shù)應(yīng)該為虛
建議43:絕不讓構(gòu)造函數(shù)為虛
建議44:避免在構(gòu)造析構(gòu)函數(shù)中調(diào)用虛函數(shù)
建議45:默認參數(shù)在構(gòu)造函數(shù)中給你帶來的喜與悲
建議46:區(qū)分overloading、overriding及hiding之間的差異
建議47:重載operator=的標(biāo)準(zhǔn)三步走
建議48:運算符重載,是成員函數(shù)還是友元函數(shù)
建議49:有些運算符應(yīng)該成對實現(xiàn)
建議50:特殊的自增自減運算符重載
建議51:不要重載operator&&、operator
……
第二部分 編碼習(xí)慣和規(guī)范篇
第三部分 程序架構(gòu)和思想篇
章節(jié)摘錄
版權(quán)頁:插圖:前面的建議中我們不厭其煩的一再重復(fù):內(nèi)存泄漏是一個很大很大的問題!為了應(yīng)對這個問題,已經(jīng)有許多技術(shù)被研究出來,比如Garbage Collection(垃圾回收)、Smart Pointer(智能指針)等。Garbage Collection技術(shù)一直頗受注目,并且在Java中已經(jīng)發(fā)展成熟,成為內(nèi)存管理的一大利器,但它在C++語言中的發(fā)展卻不順利,C++為了追求運行速度,20年來態(tài)度堅決地將其排除在標(biāo)準(zhǔn)之外。真不知C++通過加大開發(fā)難度來換取執(zhí)行速度的做法究竟是利還是弊。為了稍許平復(fù)因為沒有Garbage Collection而引發(fā)的C++程序員的怨氣,C++對Smart Pointer技術(shù)采取了不同的態(tài)度,它選擇對這一技術(shù)的支持,并在STL中包含了支持Smart Pointer技術(shù)的class,賜予了C/C++程序員們一件管理內(nèi)存的神器。Smart Pointer是Stroustrup博士所推崇的RAII (Resource Acquisition In Initialization)的最好體現(xiàn)。該方法使用一個指針類來代表對資源的管理邏輯,并將指向資源的句柄(指針或引用)通過構(gòu)造函數(shù)傳遞給該類。當(dāng)離開當(dāng)前范圍( scope)時,該對象的析構(gòu)函數(shù)一定會被調(diào)用,所以嵌在析構(gòu)函數(shù)中的資源回收的代碼也總是會被執(zhí)行。這種方法的好處在于,由于將資源回收的邏輯通過特定的類從原代碼中剝離出來,自動正確地銷毀動態(tài)分配的對象,這會讓思路變得更加清晰,同時確保內(nèi)存不發(fā)生泄露。
媒體關(guān)注與評論
在程序員中,曾經(jīng)有一個廣為流傳的段子,一位程序員抱怨:“這段代碼是誰寫的?非傻即呆!”結(jié)果他在代碼結(jié)尾的注釋中發(fā)現(xiàn),這正是自己幾年前的“杰作”。同樣的功能,實現(xiàn)的代碼可以千差萬別,大師級的程序員可能只需要寫兩行代碼,但程序卻近乎完美,一般的程序員可能會敲數(shù)百甚至數(shù)千行代碼,而且還漏洞百出。如何才能編寫出高質(zhì)量的代碼呢?這是每個程序員所關(guān)心的問題。本書就如何編寫出高質(zhì)量的C++代碼,從語法、編碼規(guī)范和編程思想三大方面給出了大量的最佳實踐,極具參考價值。強烈推薦! ——51CTO(中國領(lǐng)先的IT技術(shù)網(wǎng)站)每個程序員都希望自己能編寫出優(yōu)質(zhì)高效的代碼,但真正能做到的少之又少,因為這不僅需要對技術(shù)有深入的鉆研,而且需要大量經(jīng)驗的積累。本書作者將自己和C++領(lǐng)域的前輩們在大量編程實踐中總結(jié)出來的經(jīng)驗,從語法、編碼習(xí)慣和規(guī)范、程序設(shè)計思想三個方面進行了分類梳理,一共總結(jié)出了150條極具參考價值的建議。如果能將本書的內(nèi)容吃透并融會貫通,不僅能讓自己少走彎路,而且還能讓自己的編程功力大增?! X林松資深 C++技術(shù)專家,著有暢銷書《C++反匯編與逆向分析技術(shù)揭秘》C++語言以多范型見長,掌握和應(yīng)用都需要下不小的功夫。然而一旦學(xué)成,就如侯捷老師曾經(jīng)說過的那樣有著“妙用無窮”的旨趣和力量。本書從語言、編程規(guī)范和程序設(shè)計思想三個方面對C++編程中的疑點和難點進行了歸納與分析。實例豐富,語言通俗易懂,為C++程序員巧學(xué)和妙用C++指點迷津。這表明國內(nèi)的作者已經(jīng)開始擺脫人云亦云的思想枷鎖,而開始進行獨立思考和寫作的實踐,這是非常難能可貴的。希望讀者們能夠從本書中學(xué)有所獲。 ——高博 盛大創(chuàng)新院技術(shù)骨干、知名譯者(譯有《設(shè)計原本》等多本經(jīng)典著作)
編輯推薦
《編寫高質(zhì)量代碼:改善C++程序的150個建議》:從語法、編碼習(xí)慣和編程規(guī)范、程序架構(gòu)和思想3個方面深入探討編寫高質(zhì)量C++代碼的技巧、禁忌和最佳實踐。大多數(shù)C++程序員都會在進階的路上被以下幾類問題所困擾:一、來自于語言本身的問題。例如:如何掌握變量定義的位置與時機?為什么不要重載operator&operatorll,以及operator?如何選擇合適的STL容器為我所用?二、來自于編碼習(xí)慣和編程規(guī)范方面的問題。例如:如何避免無意中的內(nèi)部數(shù)據(jù)裸露?如何給函數(shù)和變量起一個能說話的名字?如何使用斷言來幫助你發(fā)現(xiàn)軟件開發(fā)中的問題?三、來自于程序架構(gòu)和思想方面的問題。例如:友元機制破壞封裝?如何謹慎恰當(dāng)?shù)厥褂糜言獧C制?將對象的繼承關(guān)系擴展至對象容器將帶來哪些隱患?如何從大師的代碼中學(xué)習(xí)編程思想和技藝?
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載