《C++ API 設計》——寫給想寫好類庫的程式設計師
“藉助在大規模、協作性軟體專案方面的經驗,Martin Reddy介紹了對個體開發者和開發組織都有實際價值的模式與實踐。《C++ API設計》探索了常常被忽視的技術性和非技術性問題,有助於推動成功的設計決策,從而產生高質量的,健壯的,而且可以長期使用的API。”
API是應用程式設計介面的縮寫。API開發在現代軟體開發中隨處可見,其目的是為某個元件的功能提供一個邏輯介面,同時隱藏該模組內部的實現細節。有些API用起來很順手,而有些則用起來讓人摸不著頭腦,更有些讓人直接棄用。編寫優質的API非常困難。大多數人的經驗都源於不斷犯錯或借鑑別人的經驗,而本書試圖打破這種局面,提煉出耐用且不會過時的API設計策略。API有哪些品質要求,有哪些關鍵要素,有哪些通用的技巧,設計時要遵循哪些原則……這些問題都能在本書中找到答案。
本書主要內容。
- 第1章:API簡介。闡釋API的概念及其獨特之處,概覽全書內容。
- 第2章:特徵。解答優秀API應具備的特點。
- 第3章:模式。著眼於一些特定的API設計模式和慣用法,包括Pimpl慣用法、單例(singleton)、工廠方法(factory method)、代理(proxy)、介面卡(adapter)、外觀(facade)模式以及觀察者(observer)模式。
- 第4章:設計。討論功能需求的收集和使用用例建模推動簡潔有用的介面的設計,以及一些物件導向分析和設計的技術。這一章也將討論大型軟體專案所面臨的諸多問題。
- 第5章:風格。敘述各種風格的C和C++ API,如純C API、物件導向API、基於模板的API以及資料驅動的API。
- 第6章:C++的用法。討論各種能夠影響良好API設計的C++語言特性,如良好建構函式和操作符風格、名稱空間、指標和引用引數的比較、友元的使用以及如何在動態庫中匯出符號。
- 第7章:效能。分析API的效能問題並說明如何使用C++構建高效能的API。
- 第8章:版本控制。主要討論API版本控制以及如何保持向後相容性。
- 第9章:文件化。通過具體示例,藉助優秀的Doxygen工具,闡述給API新增註釋以及編寫文件的技巧。
- 第10章:測試。介紹各種型別的自動測試,包括單元測試、整合測試和效能測試,同時列舉一些可以在專案中使用的優秀的測試方法。
- 第11章:指令碼化。討論如何為C++ API建立指令碼繫結,以便此API能夠被諸如Python和Ruby等語言呼叫。
- 第12章:可擴充套件性。介紹如何編寫可擴充套件的API,以便讓程式設計師編寫定製的C++外掛以擴充套件其所提供的基本功能。這一章還會講解如何使用繼承和模板建立可擴充套件的介面。
- 附錄A:庫 。本書以如何建立靜態和動態庫的附錄作為結尾,討論靜態庫和共享庫之間的不同,並演示如何使用編譯器生成這些庫,以使你的程式碼能在其他應用中重用。
Martin Reddy博士是Code Reddy公司的CEO。他擁有電腦科學的博士學位以及在軟體行業超過15年的從業經驗。在此期間,Reddy博士撰寫了40多篇論文,發表了3項軟體專利,並與人合著了Level of Detail for 3D Graphics。他還是ACM以及IEEE的會員。
Reddy博士曾在Pixar動畫工作室工作過6年,他是該工作室的內部動畫系統的首席工程師。他設計並實現了很多高效能的API,這些API在一些奧斯卡獲獎影片及提名電影的製作中大放異彩,這些電影包括:《海底總動員》、《超人總動員》、《賽車總動員》、《美食總動員》,以及《機器人總動員》等。
隨後他在Bakery動畫工作室擔任技術經理,並領導了這家創業公司的動畫軟體開發,其工作包括設計與實現很多關鍵的API及制定整體的動畫工作流和使用者介面。
Reddy博士在他早期職業生涯中曾在SRI International供職5年,主要從事分散式三維地形視覺化技術相關的工作,該工作包括幾個開源地球空間資訊API的開發。他成功建立了在Web上描述3D地球空間資訊模型的ISO標準,並且還連續兩年被選為Web3D協會的會長。
Reddy博士開辦了一所諮詢公司,旨在為不同的軟體公司提供技術諮詢,他的客戶包括Linden Lab和Planet 9 Studios。前者涉及開源專案Second Life(第二人生)的API設計和基本架構的改進。Second Life是一個線上的3D虛擬世界,在全球已經有上千萬人使用者。
相關文章
- 好程式設計師不寫程式碼程式設計師
- 寫給程式設計師:當自己的上帝程式設計師
- 一個老程式設計師的程式設計之路,寫給年輕的程式設計師們程式設計師
- 程式設計師既要寫好程式碼,又要寫好文件程式設計師
- 寫給前端程式設計師的命令列入門前端程式設計師命令列
- 寫給新入行的程式設計師小朋友程式設計師
- 寫給程式設計師的有效學習方法程式設計師
- 寫給未來程式設計師的建議程式設計師
- 設計師,寫給CEO,寫給產品,寫給運營,寫給技術
- 寫給想學網頁設計的朋友們網頁
- 寫給前端程式設計師的英文學習指南前端程式設計師
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 寫給Java程式設計師的Java虛擬機器學習指南Java程式設計師虛擬機機器學習
- 寫給程式設計師的管理入門課程(轉)程式設計師
- 寫給程式設計師的 Unicode 入門介紹程式設計師Unicode
- 寫給考慮創業的年輕程式設計師創業程式設計師
- 寫給iOS程式設計師的命令列使用祕籍iOS程式設計師命令列
- 寫給 Python 程式設計師看的 Rust 介紹Python程式設計師Rust
- 程式設計師寫的跳轉程式設計師
- 程式設計師世界的縮寫程式設計師
- 程式設計師寫的情書程式設計師
- 給程式設計師的幾點程式設計經驗----《編寫高質量程式碼》程式設計師
- 寫給Java程式設計師學習路線圖Java程式設計師
- 程式設計師與寫作程式設計師
- 《寫給程式設計師的Web設計書》作者Brian Hogan的PPT彙集程式設計師WebHOG
- C++程式碼書寫規範——給新手程式設計師的一些建議C++程式設計師
- 寫給年輕程式設計師的一封信程式設計師
- 某資深程式設計師寫給後來者的忠告程式設計師
- 寫給.NET程式設計師:不要困在自己建造的盒子裡程式設計師
- 寫給程式猿們的互動設計
- 程式設計師寫好技術文章的幾點小技巧程式設計師
- 好程式設計師web前端教程分享JavaScript簡寫方法程式設計師Web前端JavaScript
- 程式設計師如何寫好一篇技術文章?程式設計師
- 了不起的程式設計師之:寫給想要初學java的你程式設計師Java
- 中國程式設計師與美國程式設計師寫程式碼的區別分析程式設計師
- 好程式設計師分享javascript中的常見的相容寫法程式設計師JavaScript
- 程式設計師如何寫出好程式碼?程式設計師
- 程式設計師這樣寫程式碼程式設計師