14業界編程規範和書籍
本次編程規範整理的原則是求精不求全,主要針對華為當前編碼上的突出問題,所以在全面性上不免
有所欠缺。業界一些公司、組織也發布了一些編程規範,對程式設計語言的缺陷、使用風險都有很好的描
述,這裡做一些簡單的推介,有興趣的同學可以在平時學習中可以參考,提高自己的編程能力。
14.1 業界編程規範
14.1.1 《google C++ code style》(google C++編程指南)
google對外公布的一份google內部編寫C++的代碼規範文檔。
Google開發人員認為C++是一門包含大量進階特性的巨型語言,某些情況下,他們會限制甚至禁止使用某
些特性,使代碼簡化,避免可能導致的各種問題。
包含的內容:標頭檔、命名規則、注釋、語言特性的使用規則、編碼格式,等等。
特點:強調理解基礎上的遵循,一個規則通常明確說明其優點、缺點,並舉很多例子,讓讀者在理解
的基礎上遵循,不像規章制度那樣生硬和抽象,實際上讀起來更像一個教程。
比如:禁止使用C++異常,花了一頁紙的篇幅來解釋使用和不使用的優缺點,非常容易理解。
14.1.2 《C++編程規範101條規則、準則與最佳實務》
這本編程規範凝聚兩位知名的C++專家(薩特,(Herb Sutter) 曾任ISO C++標準委員會主席;亞曆山德
雷斯庫(Andrei Alexandrescu)世界頂尖的C++專家),以及全球C++界20年的集體智慧和經驗。
書中對每一條規範都給出了精確的描述,並輔以執行個體說明;從類型定義到錯誤處理,涵蓋了C++程式設
計的每一個方面,都給出了最佳實務。即使使用C++多年的程式員也會從中受益匪淺。
包含內容:包括設計和編碼風格、函數、操作符、類的設計、繼承、構造與析構、賦值、名字空間、
模組、模板、泛型、異常、stl容器和演算法等。
14.1.3 Microsoft All-In-One Code Framework 《微軟一站式範例程式碼庫》
微軟一站式範例程式碼庫 (Microsoft All-In-One Code Framework) 由微軟社區支援人員團隊傾力呈現,
根據MSDN論壇、熱門社交網路、多個開發人員社區收集的開發人員最關心和最煩惱的問題,編寫相應的代
碼樣本,並以很短的周期發布更新,以方便開發人員下載參考。通過這些範例程式碼,協助社區開發人員提
高開發效率,減少代碼中可能出現的bug,並增強代碼的可維護性。
強調高品質程式碼範例所具有的特質:1.易懂;2.正確性;3.一致性;4.流行性;5.可靠性;6.安全性。
包含內容:1、通用編程規範–對代碼風格,格式和結構提供了全域通用的指導;2、C++ 編程規範;
3.NET 編碼規範。
14.2 擴充學習材料
本規範涉及到一系列C++語言特性和技術,需要深入學習相關知識。
推薦學習但不限於以下材料:
14.2.1 C++ primer
作者:C++大師Stanley B. Lippman,C++標準委員會原負責人Josée Lajoie。
業界公認的完整涵蓋C++標準的權威著作,對基本編程技術,物件導向編程,標準庫和泛型程式設計都有全
面的介紹。強調重要的知識點,提醒常見的錯誤,推薦優秀的編程實踐,給出使用提示,和大量來自
實戰的樣本和習題。
推薦語:初學者的指南,熟練者的參考書。
推薦度:★★★★★
14.2.2 effective C++ / more effective C++
世界頂級C++大師Scott Meyers成名之作《effective C++》(改善程式與設計的55個具體做法)以及續
集《more effective C++》(35個改善編程與設計的有效方法)。
被評為影響最深遠、最受推崇的書籍之一。讀過這本書能夠跨越C++重重險阻,迅速提升C++功力,值
得反覆閱讀和體會。
書中每一條準則描述一個編寫出更好的 C++ 程式的方法,每一個條款的背後都有具體範例支撐。
內容包括:改變舊有的C習慣;記憶體管理;建構函式,解構函式和Assignment運算子;類與函數的設計
和聲明;類與函數實現;繼承關係和物件導向設計;模板,等等。
推薦語:有人說C++程式員可以分成兩類,讀過Effective C++的和沒讀過的。
推薦度:★★★★★
參考推薦讀物: 《Exceptional C++》 (作者:薩特,也是 《C++編程規範101條規則、準則與最佳實務》
的作者),可作為進階讀物。
14.2.3 Effective STL
Scott Meyers(Effective C++和More Effective C++的作者)的又一大作,揭示總結了的一些關鍵規則,
包括專家們總是採用的做法以及總是避免的做法。
重點講述如何使用STL,共有50條指導原則,在講述每一條指導原則的時候,Scott Meyers都提供了透
徹的分析和深刻的執行個體,所以讀者不僅可以學到要做什麼,而且還能夠知道什麼時候該這樣做,以及
為什麼要這樣做。
主要包括以下幾個方面:1、關於選擇容器的建議,涉及到的容器有:標準STL容器(例如vector和list)、
非標準的STL容器(例如hash_set和hash_map),以及非STL容器(例如bitset)。2、一些改進效率的技術,
如何最大程度地提高STL程式的效率。
推薦語:通過這些規則,程式員可以最大限度地使用 STL。
推薦度:★★★★
參考推薦讀物: 《C++設計新思維::泛型程式設計與設計模式之應用》, 《泛型程式設計與STL》,作為進階讀
物。
14.2.4 inside the C++ object model
C++大師Stanley B. Lippman著。中文名《深度探索C++物件模型》,候捷譯。
該書專註於C++物件導向程式設計的底層機制,包括結構化、臨時對象的產生、封裝、繼承,以及虛擬
——虛擬函數和虛擬繼承。協助程式員瞭解底層實現,深刻理解C++以及編譯器背後的處理,迅速提高
編程能力,知其所以然。
推薦語:若想成為編程高手,並能指導他人,可將此書作為進階閱讀材料。
推薦度:★★★★