C++之美:代碼整潔、安全又跑得快的30個要訣(英文版)
定 價:109 元
- 作者:(美)J.蓋伊·戴維森,凱特·格雷戈里
- 出版時間:2024/5/1
- ISBN:9787121446009
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312.8C++
- 頁碼:
- 紙張:
- 版次:
- 開本:
本書從《C++核心準則》(C++ Core Guideline)數(shù)百個條目中精心挑選了30條準則進行細致、深入的講解。內(nèi)容涵蓋C++語言最主要的方面,如類型系統(tǒng)、面向?qū)ο、模板和元編程、錯誤處理、程序性能、常量性等,其間又恰如其分地穿插了編碼風格、設計模式等主題。探討的過程中處處可見來自作者數(shù)十年職業(yè)生涯的經(jīng)驗和示例,除了深入的洞察,行文中充滿了趣味性。作者試圖通過這種突出重點、以點帶面的方式幫助讀者了解并學習C++核心準則,進而更深入地掌握C++這門編程語言,特別是它的“現(xiàn)代”形態(tài)。
J.蓋伊·戴維森于 1980 年通過 Acorn Atom 首次接觸到計算機。他青少年時代的大部分時間都是在各種家用電腦上編寫游戲,這些電腦包括 Sinclair Research ZX81 和 ZX Spectrum,以及 Atari ST。后來他從蘇塞克斯大學獲得了數(shù)學學位,他還涉足過戲劇,在一支靈魂樂隊中彈奏過鍵盤,之后在 20 世紀 90 年代初,他決定編寫演示程序,并于 1997 年開始在 Codemasters 的倫敦辦公室工作,從此進入游戲行業(yè)。1999 年,他加入了 Creative Assembly,現(xiàn)在是那里的工程實踐主管。他從事《全面戰(zhàn)爭》系列游戲的工作,管理著早期的游戲目錄,也負責在工程團隊中提升編程水準。他在IGGI 咨詢委員會、BSI C++小組和 ISO C++委員會中任職。他是 ACCU 委員會的標準官員,并在 ACCU 會議的編程委員會任職。他是#include Discord 服務器的管理員。他擔任多個組織的行為準則負責人。他會在 C++會議和各種聚會上發(fā)言,特別是活躍于將線性代數(shù)添加到標準庫的相關議題中。凱特·格雷戈里從接觸編程、結識幾位最親密的朋友到認識她的丈夫,都是 1977 年在滑鐵盧大學完成的,所有這些她從未想過回頭。她的專業(yè)是化學工程,這正說明你很難從一個人的專業(yè)中看出什么。她在安大略省農(nóng)村的地下室有一個小房間,里面放著一些古老的計算機:PET、C64、手工焊接的 6502 系統(tǒng)等,她把這些作為一個更單純時代的紀念品。1986 年以來她與丈夫一起經(jīng)營 Gregory 咨詢公司,幫助世界各地的客戶更好地完成工作。Kate 曾在五大洲都做過主題演講,偏愛發(fā)掘一些改變認知的真相,然后與人分享,此外還投入大量的時間在各種 C++活動中做志愿者。其中#include 是她的最愛,此社區(qū)正在改變這個行業(yè),使其更受歡迎也更具包容性。他們的 Discord 服務器是一處溫馨的場所,在這里你可以作為初學者學習 C++,也可以參與 WG21 的文章創(chuàng)作工作以改變我們使用的語言,或者做任何介于兩者之間的事情。
J.蓋伊·戴維森于 1980 年通過 Acorn Atom 首次接觸到計算機。他青少年時代的大部分時間都是在各種家用電腦上編寫游戲,這些電腦包括 Sinclair Research ZX81 和 ZX Spectrum,以及 Atari ST。后來他從蘇塞克斯大學獲得了數(shù)學學位,他還涉足過戲劇,在一支靈魂樂隊中彈奏過鍵盤,之后在 20 世紀 90 年代初,他決定編寫演示程序,并于 1997 年開始在 Codemasters 的倫敦辦公室工作,從此進入游戲行業(yè)。1999 年,他加入了 Creative Assembly,現(xiàn)在是那里的工程實踐主管。他從事《全面戰(zhàn)爭》系列游戲的工作,管理著早期的游戲目錄,也負責在工程團隊中提升編程水準。他在IGGI 咨詢委員會、BSI C++小組和 ISO C++委員會中任職。他是 ACCU 委員會的標準官員,并在 ACCU 會議的編程委員會任職。他是#include Discord 服務器的管理員。他擔任多個組織的行為準則負責人。他會在 C++會議和各種聚會上發(fā)言,特別是活躍于將線性代數(shù)添加到標準庫的相關議題中。凱特·格雷戈里從接觸編程、結識幾位最親密的朋友到認識她的丈夫,都是 1977 年在滑鐵盧大學完成的,所有這些她從未想過回頭。她的專業(yè)是化學工程,這正說明你很難從一個人的專業(yè)中看出什么。她在安大略省農(nóng)村的地下室有一個小房間,里面放著一些古老的計算機:PET、C64、手工焊接的 6502 系統(tǒng)等,她把這些作為一個更單純時代的紀念品。1986 年以來她與丈夫一起經(jīng)營 Gregory 咨詢公司,幫助世界各地的客戶更好地完成工作。Kate 曾在五大洲都做過主題演講,偏愛發(fā)掘一些改變認知的真相,然后與人分享,此外還投入大量的時間在各種 C++活動中做志愿者。其中#include 是她的最愛,此社區(qū)正在改變這個行業(yè),使其更受歡迎也更具包容性。他們的 Discord 服務器是一處溫馨的場所,在這里你可以作為初學者學習 C++,也可以參與 WG21 的文章創(chuàng)作工作以改變我們使用的語言,或者做任何介于兩者之間的事情。
第1章 避重就輕不可取21
1.1 P.2:使用ISO C++標準編寫代碼23
1.2 F.51:有選擇時優(yōu)先使用默認參數(shù)而非重載33
1.3 C.45:不要定義僅初始化數(shù)據(jù)成員的默認構造函數(shù),
?而應使用類成員初始化43
1.4 C.131:避免平凡的get和set函數(shù)51
1.5 ES.10:每條語句只聲明一個名字61
1.6 NR.2:不強求函數(shù)只用一條return語句69
第2章 不要傷害自己79
2.1 P.11:將凌亂的結構封裝起來,而不是使其散布于代碼中81
2.2 I.23:盡量減少函數(shù)參數(shù)91
2.3 I.26:使用C風格子集獲取跨編譯器的ABI99
2.4 C.47:按成員聲明順序定義并初始化成員變量107
2.5 CP.3:盡量減少可寫數(shù)據(jù)的顯式共享117
2.6 T.120:只在真正需要時使用模板元編程127
第3章 別再使用139
3.1 I.11:切勿通過原生指針(T*)或引用(T&)轉移所有權141
3.2 I.3:避免使用單例149
3.3 C.90:依靠構造函數(shù)和賦值運算符,而不是memset和memcpy159
3.4 ES.50:不要用強制轉換去除const限定符169
3.5 E.28:避免基于全局狀態(tài)(如errno)的錯誤處理179
3.6 SF.7:不要在頭文件的全局作用域?qū)憉sing namespace189
第4章 正確使用新特性199
4.1 F.21:優(yōu)先選擇結構體或元組返回多個“輸出”值201
4.2 Enum.3:優(yōu)先選擇類枚舉而不是“普通”枚舉213
4.3 ES.5:保持作用域小221
4.4 Con.5:使用constexpr表示編譯時可以計算的值233
4.5 T.1:使用模板提高代碼的抽象層次245
4.6 T.10:為所有模板參數(shù)指定概念255
第5章 默認寫出好代碼265
5.1 P.4:理想情況下,程序應具有靜態(tài)類型安全性267
5.2 P.10:優(yōu)先選擇不可變數(shù)據(jù)而不是可變數(shù)據(jù)279
5.3 I.30:封裝違反規(guī)則的部分287
5.4 ES.22:確定初始值后再聲明變量295
5.5 Per.7:為促成優(yōu)化而設計305
5.6 E.6:使用RAII防止泄露313
后記325
跋327