C++編程規(guī)范

出版時間:20101112  出版社:人民郵電出版社  作者:Herb Sutter,Andrei Alexandrescu  頁數(shù):216  譯者:劉基誠  
Tag標簽:無  

前言

盡早進入正軌:以同樣的方式實施同樣的過程。不斷積累慣用法。 將其標準化。如此,你與莎士比亞之間的唯一區(qū)別將只是掌握 慣用法的多少,而非詞匯的多少。 ——Alan Perlis 標準最大的優(yōu)點在于,它提供了如此多樣的選擇。 ——出處尚無定論 我們之所以編寫本書,作為各開發(fā)團隊編程規(guī)范的基礎,有下面兩個主要原因。 編程規(guī)范應該反映業(yè)界最久經(jīng)考驗的經(jīng)驗。它應該包含凝聚了經(jīng)驗和對語言的深刻理解的公認的慣用法。具體而言,編程規(guī)范應該牢固地建立在大量豐富的軟件開發(fā)文獻的基礎之上,把散布在各種來源的規(guī)則、準則和最佳實踐匯集在一起。 不可能存在真空狀態(tài)。通常,如果你不能有意識地制定合理的規(guī)則,那么就會有其他人推行他們自己喜歡的規(guī)則集。這樣產(chǎn)生的編程規(guī)范往往具有各種最不應該出現(xiàn)的屬性。例如,許多這樣的編程規(guī)范都試圖強制盡量少地按C語言的方式使用C++。 許多糟糕的編程規(guī)范都是由一些沒有很好地理解語言、沒有很好地理解軟件開發(fā)或者試圖標準化過多東西的人制定的。糟糕的編程規(guī)范會很快喪失可信度,如果程序員不喜歡或者不同意其中一些糟糕的準則,那么即使規(guī)范中有一些合理的準則,也可能被不抱幻想的程序員所忽略,這還是最好的情況,最壞的情況下,糟糕的標準可能真會被強制執(zhí)行。 如何使用本書 三思而行。應該遵循好的準則,但是不要盲從。在本書的各準則中,請注意“例外情況”部分闡明了該準則可能不適用的不太常見的情況。任何準則,無論如何正確(當然,我們自認為本書中的準則是正確的),都不能代替自己的思考。 每個開發(fā)團隊都應該制定自己的標準,制定標準的時候都應該盡職盡責。這項工作是整個團隊的事情。如果你是團隊負責人,應該讓團隊成員都參與制定標準。人們當然更愿意遵守“自己的”標準,而非別人強加的一堆規(guī)矩。 編寫本書的目的是為各開發(fā)團隊提供編程規(guī)范的基礎和參考。它并不是要成為終極編程規(guī)范,因為不同的團隊會有適合特定群體或者特定任務的更多準則,應該大膽地將這些準則加入本書的條款中。但是我們希望本書能夠通過記載和引用廣泛接受的、權威的、幾乎可以通用的(“例外情況”指出的除外)實踐經(jīng)驗,減少讀者制定或重新制定自己的編程規(guī)范的工作量,從而幫助提高讀者所用編程規(guī)范的質(zhì)量和一致性。 讓團隊人員閱讀這些準則及其原理闡釋(也就是本書全文,根據(jù)需要還包括所選條款引用的其他書籍和論文),共同決定是否有團隊根本無法接受的內(nèi)容(比如,由于某些項目特殊的情況),然后實踐其余規(guī)范。一旦采納,如果未與整個團隊協(xié)商,任何人不得違反團隊編程規(guī)范。 最后,團隊還需定期復查這些準則,加入實際應用中得出的經(jīng)驗和反饋。

內(nèi)容概要

  在本書中,兩位知名的C++專家將全球C++界20年的集體智慧和經(jīng)驗凝結成一套編程規(guī)范。這些規(guī)范可以作為每一個開發(fā)團隊制定實際開發(fā)規(guī)范的基礎,更是每一位C++程序員應該遵循的行事準則。書中對每一條規(guī)范都給出了精確的描述,并輔以實例說明;從類型定義到錯誤處理,都給出了最佳的C++實踐,即使使用C++多年的程序員也會從本書中受益匪淺。  本書適合于各層次C++程序員使用,也可作為高等院校C++課程的教學參考書。

作者簡介

作者:(加拿大)薩特(Herb Sutter) (羅馬)亞歷山德雷斯庫(Andrei Alexandrescu) 譯者:劉基誠薩特,(Herb Sutter) 曾任ISO C++標準委員會主席,是C++ Users Journal雜志特邀編輯和專欄作家。他目前在微軟公司領導.NET環(huán)境下C++語言擴展的設計工作。除本書外,他還撰寫了三本廣受贊譽的圖書:Exceptional C++ Style、Exceptional C++和More Exceptional C++。前者中譯本也由人民郵電出版社出版。亞歷山德雷斯庫(Andrei Alexandrescu)世界頂尖的C++專家,C++ Users Journal雜志的專欄作家,他的Modem C++ Design一書曾榮獲2001年最佳C++圖書稱號,所開發(fā)的Loki已經(jīng)成為最負盛名的C++程序庫之一。

書籍目錄

組織和策略問題   第0條 不要拘泥于小節(jié)(又名:了解哪些東西不應該標準化)   第1條 在高警告級別干凈利落地進行編譯   第2條 使用自動構建系統(tǒng)   第3條 使用版本控制系統(tǒng)   第4條 做代碼審查 9設計風格   第5條 一個實體應該只有一個緊湊的職責   第6條 正確、簡單和清晰  第一   第7條 編程中應知道何時和如何考慮可伸縮性  第8條 不要進行不成熟的優(yōu)化   第9條 不要進行不成熟的劣化   第10條 盡量減少全局和共享數(shù)據(jù)   第11條 隱藏信息   第12條 懂得何時和如何進行并發(fā)性編程   第13條 確保資源為對象所擁有。使用顯式的RAII和智能指針 編程風格   第14條 寧要編譯時和連接時錯誤,也不要運行時錯誤   第15條 積極使用const   第16條 避免使用宏   第17條 避免使用“魔數(shù)”   第18條 盡可能局部地聲明變量   第19條 總是初始化變量   第20條 避免函數(shù)過長,避免嵌套過深   第21條 避免跨編譯單元的初始化依賴   第22條 盡量減少定義性依賴。避免循環(huán)依賴   第23條 頭文件應該自給自足   第24條 總是編寫內(nèi)部#include保護符,決不要編寫外部#include保護符 函數(shù)與操作符   第25條 正確地選擇通過值、(智能)指針或者引用傳遞參數(shù)   第26條 保持重載操作符的自然語義   第27條 優(yōu)先使用算術操作符和賦值操作符的標準形式   第28條 優(yōu)先使用++和--的標準形式。優(yōu)先調(diào)用前綴形式   第29條 考慮重載以避免隱含類型轉換   第30條 避免重載&&、||或 ,(逗號)   第31條 不要編寫依賴于函數(shù)參數(shù)求值順序的代碼 類的設計與繼承   第32條 弄清所要編寫的是哪種類   第33條 用小類代替巨類   第34條 用組合代替繼承   第35條 避免從并非要設計成基類的類中繼承   第36條 優(yōu)先提供抽象接口   第37條 公用繼承即可替換性。繼承,不是為了重用,而是為了被重用   第38條 實施安全的覆蓋   第39條 考慮將虛擬函數(shù)聲明為非公用的,將公用函數(shù)聲明為非虛擬的   第40條 要避免提供隱式轉換   第41條 將數(shù)據(jù)成員設為私有的,無行為的聚集(C語言形式的struct)除外   第42條 不要公開內(nèi)部數(shù)據(jù)   第43條 明智地使用Pimpl   第44條 優(yōu)先編寫非成員非友元函數(shù)   第45條 總是一起提供new和delete   第46條 如果提供類專門的new,應該提供所有標準形式(普通、就地和不拋出) 構造、析構與復制   第47條 以同樣的順序定義和初始化成員變量   第48條 在構造函數(shù)中用初始化代替賦值   第49條 避免在構造函數(shù)和析構函數(shù)中調(diào)用虛擬函數(shù)   第50條 將基類析構函數(shù)設為公用且虛擬的,或者保護且非虛擬的   第51條 析構函數(shù)、釋放和交換絕對不能失敗   第52條 一致地進行復制和銷毀   第53條 顯式地啟用或者禁止復制  第54條 避免切片。在基類中考慮用克隆代替復制   第55條 使用賦值的標準形式   第56條 只要可行,就提供不會失敗的swap(而且要正確地提供) 名字空間與模塊 模板與泛型 錯誤處理與異?!TL:容器 STL:算法 類型安全 參考文獻 摘要匯總 索引 

章節(jié)摘錄

插圖:外部加鎖:調(diào)用者負責加鎖。在這種選擇下,由使用對象的代碼負責了解是否跨線程共享了對象,如果是,還要負責串行化所有對該對象的使用。例如,字符串類型通常使用外部加鎖(或者不變性,見第三種選擇)。內(nèi)部加鎖:每個對象將所有對自己的訪問串行化,通常采用為每個公用成員函數(shù)加鎖的方法來實現(xiàn),這樣調(diào)用者就可以不用串行化對象的使用了。例如,生產(chǎn)者/消費者隊列通常使用內(nèi)部加鎖,因為它們存在的目的就是被跨線程共享,而且它們的接口就是為了在單獨的成員函數(shù)調(diào)用(Push,Pop)期間能夠進行適當?shù)膶哟渭渔i而設計的。更一般的情況下,需要注意,只有在知道了以下兩件事情之后這個選項才適用。第一,必須事先知道該類型的對象幾乎總是要被跨線程共享的,否則到頭來只不過進行了無效加鎖。請注意大多數(shù)類型都不會遇到這種情況,即使是在多線程處理分量很重的程序中,大多數(shù)對象也不會被跨線程共享(這是好現(xiàn)象,見第10條)。第二,必須事先知道成員函數(shù)級加鎖的粒度是合適的,而且能滿足大多數(shù)調(diào)用者的需要。具體而言,類型接口的設計應該有利于粗粒度的、自給自足的操作。如果調(diào)用者總是需要對多個而不是一個操作加鎖,那么就不能滿足需要了,只能通過增加更多的(外部)鎖,將單獨加鎖的函數(shù)組裝成一個更大規(guī)模的已加鎖工作單位。例如一個容器類型,如果它返回一個迭代器,則迭代器可能在用到之前就失效了;如果它提供find之類的能返回正確答案的成員算法,那么答案可能在用到之前就出錯了;如果它的用戶想要編寫這樣的代碼:if(c,empty())c.push-back(x);,同樣會出現(xiàn)問題。(更多的例子,參閱[Sutter02]。)在這些情況下,調(diào)用者需要進行外部加鎖,以獲得生存期能夠跨越多個單獨成員函數(shù)調(diào)用的鎖,這樣一來每個成員函數(shù)的內(nèi)部加鎖就毫無用武之地了。

編輯推薦

《C++編程規(guī)范:101條規(guī)則、準則與最佳實踐》:良好的編程規(guī)范可以改善軟件質(zhì)量,縮短上市時間,提升團隊效率,簡化維護工作。在《C++編程規(guī)范:101條規(guī)則、準則與最佳實踐》中,兩位全世界最受尊敬的c++專家將全球c++社區(qū)的集體智慧和經(jīng)驗凝結成一整套編程規(guī)范。這些規(guī)范可以作為每一個開發(fā)團隊制定實際開發(fā)規(guī)范的基礎,更是每一位c++程序員應該遵循的行事準則。《C++編程規(guī)范:101條規(guī)則、準則與最佳實踐》涵蓋了c++程序設計的每一個方面,包括設計和編碼風格、函數(shù)、操作符、類的設計、繼承、構造與析構、賦值、名字空間、模塊、模板、泛型、異常、stl容器和算法等。書中對每一條規(guī)范都給出了言簡意賅的敘述,并輔以實例說明;另外還給出了從類型定義到錯誤處理等方面的大量c++ 最佳實踐,包括許多最新總結和標準化的技術,即使使用c++多年的程序員也會從中受益匪淺。通過閱讀《C++編程規(guī)范:101條規(guī)則、準則與最佳實踐》,可以找到以下問題的答案哪些東西值得標?準化?哪些東西不值得標準化?使代碼可擴展的最佳方法是什么?合理的錯誤處理策略有哪些要素?如何(和為什么要)避免不必要的初始化、循環(huán)依賴和定義依賴?何時應該(以及如何)同時使用靜態(tài)和動態(tài)的多態(tài)性?如何實踐“安全的”改寫?何可時該提供不會失敗的交換?為什么要阻止異常跨越模塊邊界傳播7如何阻止?為什么不應該在頭文件中寫名字空問聲明或指令?為什么應該使用STL vector和string代替數(shù)組?如何選擇正確的STL搜索算法?為了保證代碼的類型安全,應該遵從哪些規(guī)則?C++界20年集大成之作兩位世界頂級專家聯(lián)袂巨獻適合所有層次C++程序員

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    C++編程規(guī)范 PDF格式下載


用戶評論 (總計61條)

 
 

  •   很不錯的書,對規(guī)范程序員的編程習慣大有益處。
  •   本來以為自己早就是老油條拉,看了這本書還是感覺收獲很大,尤其是C++的一些不常用的機制,這本書結合編程習慣也給出了非常生動地解釋。我認為每一個有責任的C++程序員都應該仔細閱讀本書,一定會因此而顯著提升自己的編程能力的。
  •   書中大部分建議都是非常好的。應該是作為日后開發(fā)過程中需要遵循的準則了
  •   值得各層次的程序員收藏,內(nèi)容實用,講解清晰
  •   C++編程規(guī)范,有助于養(yǎng)成良好的編程習慣
  •   這是一本對于C++程序員來說非常值得一看的圖書。
  •   剛剛拿到這本書。首先網(wǎng)站客服的服務態(tài)度沒的說?。?!其次快遞也很快。拿到書以后,書的質(zhì)量很好,呵呵,最沒用的一點。但是仔細翻開書看了幾頁,真的是那種實踐中磨練出的一點一滴的精華。極度推薦?。。?/li>
  •   介紹很多地方都是平時沒注意的,對提高編程水平很有幫助
  •   從第0條開始。粗粗翻看了一下。非常值得C&C++團隊的共同學習!
  •   對于C++開發(fā)精益求精的話,還是推薦看一下的,畢竟都是C++的大咖們的建議,這樣可以指導我們寫出更加優(yōu)美的C++程序。
  •   正在看書中,不錯好書。。。
  •   經(jīng)典圖書,慢慢看,要想成為一個高手,必須認真學的書之一
  •   內(nèi)容還沒看,書不錯~
  •   很好的書。推薦
  •   別人推薦的書,補充知識!
  •   聽說是經(jīng)典就買了,然后還沒看!
  •   c++ 經(jīng)典圖書,看看作者就知道了
  •   我是在網(wǎng)上看過電子版的后感覺很有價值,很值得細細捉摸學習才買下來的!很不錯?。?!
  •   東西好,速度快,下次繼續(xù)
  •   很實用,看完比較有收獲
  •   質(zhì)量上挺滿意的,但是物流稍微有點慢,不過也不是急著用
  •   送貨很快送貨很快送貨很快送貨很快
  •   初學者看不懂的,內(nèi)容深奧,高手專用。
  •   不錯,很不錯,看了很喜歡,還沒看完~~~
  •   本書列舉了101條C++編程規(guī)范,大部分是初學者也能看懂的,很適合在入門階段就養(yǎng)成良好的編程習慣。剩下一小部分,需要初學者在接下來的時日里,自己先將C++的一些高級特性以及軟件的相關思想學習后,再參照本書所述
    自己非常喜歡^^
  •   第0條翻譯成“不要在意這些細節(jié)”更潮一點。書很薄內(nèi)卻不少,就當消遣用吧。上廁所必備書籍。
  •   適合剛工作要養(yǎng)成習慣的人,介紹很到位,建議配合c++ effective一起看
  •   內(nèi)容是看不懂,幫朋友買的。不過書的質(zhì)量還是不錯的。
  •   書上整體還不錯,值得好好學習,就是有點小貴,呵呵
  •   寫的太多的理論,例子太少。不過,得有點基礎才能看的懂
  •   還沒細看。初看內(nèi)容一般,建議大家還是買《Effective C++》
  •   都說是不錯的好書,等著精讀。
  •   哈哈,質(zhì)量不錯,送貨很快
  •   初步瀏覽一下,還沒認真讀。
  •   感覺不錯,值得閱讀
  •   學學挺不錯
  •   書較一般,作為一個程序員,需要注意的規(guī)范或者說潛規(guī)則要比這里講得多得多,。。。
  •   比較適合已經(jīng)工作的編程序人員
  •   規(guī)則是有用的
  •   著作是好著作,就是翻譯的優(yōu)點蹉,很多地方是生硬翻譯,看起來很不舒服……
  •   雖然里面有一頁有褶皺
  •   收藏,有時間看看
  •   書中列舉了C++開發(fā)的注意事項,值得一看
  •   圖靈程序設計系列圖書 經(jīng)典 強烈推薦!
  •   里面內(nèi)容簡短精煉,淺顯易懂,很不錯。
  •   書質(zhì)量挺好的,是正品
  •   Sutter的書,確實很實用,出發(fā)點多是從c++標準,而不是從某一些編譯器。對開發(fā)可移植的代碼很有好處
  •   給朋友買的,所以不太清楚
  •   很多東西十分值得細看。很多東西是經(jīng)驗積累才能得出的。
  •   幫同學買的,他說不錯,適合有一定水平的人看
  •   概述簡介,語言通俗易懂,詳細介紹了編寫程序的各種規(guī)范和要注意的地方。主要是其內(nèi)容高度集中,簡要明白。
  •   能讓你理解C++中那些稍微深層次的技術,以及技術背后的設計理念
  •   對于提高C++ 水平寫出標準的規(guī)范的代碼有著不錯的作用
  •   很好的一本書。適合有一定基礎的C++讀者使用。書的質(zhì)量非常好,絕對正版。以后買書必到到卓越,理由有四:一是價格優(yōu)惠。買書價格絕對是王道。二是質(zhì)量過硬。絕對不會出現(xiàn)盜版書。三是服務周到??爝f很給力。一般第二天就能到。另外,全場貨到付款,可以刷pos機,很爽。讓你見到東西再付款,買的放心,符合大眾心理,沒有過硬的質(zhì)量是絕對不敢這樣做的。
  •   為什么要10個字以上?夠了嗎。書不錯,對卓越的退換貨制度很滿意。
  •   有經(jīng)驗的書籍
  •   好書買國外作者
  •   規(guī)范寫的不錯
  •   還沒看,薄薄的一小本
  •   c++經(jīng)典書籍
  •   講經(jīng)驗的書
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7