C++編程規範(C++ Coding Standards)
Herb Sutter and Andrei Alexandrescu
101個準則、指導方針,和最佳實踐
堅實而高品質的編程規範(coding standards)可以改善軟體品質,提早產品上市,助長團隊合作,把時間用在重要且合理的事情上,並且簡化維護。當今全球最受矚目的兩位C++ 專家從全世界無數C++ 社群的豐富經驗中提煉出一整組編程規範,讓每一位開發人員和團隊都能夠了解並用來做為他們自己的編程規範的基礎。
兩位作者涵蓋了C++ 編程的幾乎每一個面向:設計和撰碼風格(design and coding style)、函式(functions)、運算子(operators)、class設計、繼承(inheritance)、建構/解構(construction/destruction)、拷貝(coping)、賦值(assignment)、命名空間(namespaces)、模塊(modules)、模板(templates)、泛型(genericity)、異常(exceptions)、STL容器和演算法(containers and algorithms),以及更多內容,並搭配實際範例。從型別定義(type definition)到錯誤處理(error handling),本書呈現C++的最佳實踐,包括某些縱使你使用C++ 多年也不一定知曉,最近才獲確認及標準化的技術。循此方向,你將發現諸如此類的問題解答:
● 什麼東西值得被標準化?什麼不值得?
● 什麼是寫出伸縮性程式碼(code for scalability)的最佳手段?
● 什麼是合理的錯誤處理策略(error handling policy)的要素?
● 如何(以及為什麼)避免非必要的初始化和循環相依(cyclic dependencies)?
● 何時(以及如何)應該同時使用靜態和動態多型(static and dynamic polymorphism)?
● 如何實踐安全的覆寫("safe" overriding)?
● 何時應該提供一個no-fail swap?
● 為什麼應該(以及如何)阻止異常跨模塊邊界(across module boundaries)傳播?
● 為什麼不該在表頭檔內寫namespace的宣告式或指令(declarations or directives)?
● 為什麼應該使用STL的vector和string來取代arrays?
● 如何選擇正確的STL search或sort演算法?
● 應該遵循什麼規則來保證type-safe程式碼?
不論個人或團隊,本書助你寫出更乾淨的程式碼 — 而且更快寫出,帶著更少的困難和挫敗。
Herb Sutter是三本受高度讚揚的書籍的作者,它們分別是《Exceptional C++ Style》、《Exceptional C++》和《More Exceptional C++》(Addison Wesley)。他目前是C++ 標準委員會主席,也是C/C++ User Journal的特約編輯和專欄作家。作為Microsoft的軟體架構師(software architect),Sutter目前正領導設計C++ language extensions for .NET programming。
Andrei Alexandrescu是獲譽無數的《Modern C++ Design》(Addison Wesley, 2001)一書作者,以及C/C++ User Journal專欄作家。