TOP
0
0
即日起~6/30,暑期閱讀書展,好書7折起
C++ API設計(簡體書)
滿額折

C++ API設計(簡體書)

商品資訊

人民幣定價:89 元
定價
:NT$ 534 元
優惠價
87465
絕版無法訂購
相關商品
商品簡介
作者簡介
目次

商品簡介

現代軟件開發中的一大難題就是如何編寫優質的API。API負責為某個組件提供邏輯接口並隱藏該模塊的內部細節。多數程序員依靠的是經驗和冒險,從而很難達到健壯、高效、穩定、可擴展性強的要求。Martin Reddy博士在自己多年經驗基礎之上,對於不同API風格與模式,總結出了API設計的種種最佳策略,著重針對大規模長期開發項目,輔以翔實的代碼範例,從而有助於設計決策的成功實施,以及軟件項目的健壯性及穩定性的實現。《C++ API設計》主要內容:API簡介及其特點API的一些設計模式及慣用法影響API的設計的一些C++特性把控API的風格與性能版本控制與文檔化的實現各種優秀的測試方法如何創建腳本綁定,以便API能被諸如Ruby和Python等語言調用可擴展性API的基本實現方式類庫的編譯器實現

作者簡介

Martin Reddy,博士是軟件行業的一名老兵,有著15年以上的從業經驗,共撰寫過40多篇論文,擁有3項軟件專利,並與他人合著了Level of Detail for 3D Graphics。另外,他還是ACM以及IEEE的會員。早年,他曾在SRI International供職5年,主要從事分布式三維地形可視化技術方面的工作,他成功創建了在Web上描述3D地球空間信息模型的ISO標準,並且還連續兩年被選為Web3D協會的會長。他曾在Pixar動畫工作室工作過6年,擔任內部動畫系統的首席工程師,設計並實現了很多高性能API,這些API在一些奧斯卡獲獎及提名影片的製作中都發揮了關鍵作用,這些影片有《海底總動員》、《超人總動員》、《賽車總動員》、《料理鼠王》,以及《機器人總動員》等。他還開辦了一家諮詢公司Code Reddy,為各家軟件公司提供技術諮詢,主要客戶有Linden Lab和Planet 9 Studios,為大型在線3D虛擬世界《第二人生》設計了API並改善了其基本架構。現在他擔任ToyTalk公司的首席技術官。

目次

第1章 API簡介 1.1 什麼是API 1.1.1 契約和承包人 1.1.2 C++中的API 1.2 API設計上有什麼不同 1.3 為什麼使用API 1.3.1 更健壯的代碼 1.3.2 代碼複用 1.3.3 並行開發 1.4 何時應當避免使用API 1.5 API示例 1.5.1 API層次 1.5.2 真實示例 1.6 文件格式和網絡協議 1.7 關於本書 第2章 特徵 2.1 問題域建模 2.1.1 提供良好的抽象 2.1.2 關鍵對象的建模 2.2 隱藏實現細節 2.2.1 物理隱藏:聲明與定義 2.2.2 邏輯隱藏:封裝 2.2.3 隱藏成員變量 2.2.4 隱藏實現方法 2.2.5 隱藏實現類 2.3 最小完備性 2.3.1 不要過度承諾 2.3.2 謹慎添加虛函數 2.3.3 便捷API 2.4 易用性 2.4.1 可發現性 2.4.2 不易誤用 2.4.3 一致性 2.4.4 正交 2.4.5 健壯的資源分配 2.4.6 平臺獨立 2.5 松耦合 2.5.1 僅通過名字耦合 2.5.2 降低類耦合 2.5.3 刻意的冗餘 2.5.4 管理器類 2.5.5 回調、觀察者和通知 2.6 穩定的、文檔詳細且經過測試的API 第3章 模式 3.1 Pimpl慣用法 3.1.1 使用Pimpl 3.1.2 複製語義 3.1.3 Pimpl與智能指針 3.1.4 Pimpl的優點 3.1.5 Pimpl的缺點 3.1.6 C語言的不透明指針 3.2 單例 3.2.1 在C++中實現單例 3.2.2 使單例線程安全 3.2.3 單例與依賴注入 3.2.4 單例與單一狀態 3.2.5 單例與會話狀態 3.3 工廠模式 3.3.1 抽象基類 3.3.2 工廠示例 3.3.3 擴展工廠示例 3.4 API包裝器模式 3.4.1 代理模式 3.4.2 適配器模式 3.4.3 外觀模式 3.5 觀察者模式 3.5.1 MVC架構 3.5.2 實現觀察者模式 3.5.3 推與拉觀察者 第4章 設計 4.1 良好設計的例子 4.1.1 積累技術債 4.1.2 償還技術債 4.1.3 為長期而設計 4.2 收集功能性需求 4.2.1 什麼是功能性需求 4.2.2 功能性需求舉例 4.2.3 維護需求 4.3 創建用例 4.3.1 開發用例 4.3.2 用例模板 4.3.3 編寫高質量用例 4.3.4 需求與敏捷開發 4.4 API設計的元素 4.5 架構設計 4.5.1 架構的開發 4.5.2 架構的約束 4.5.3 識別主要抽象 4.5.4 創造關鍵對象 4.5.5 架構模式 4.5.6 架構的交流 4.6 類的設計 4.6.1 面向對象概念 4.6.2 類設計選項 4.6.3 使用繼承 4.6.4 Liskov替換原則 4.6.5 開放?封閉原則 4.6.6 迪米特法則 4.6.7 類的命名 4.7 函數設計 4.7.1 函數設計選項 4.7.2 函數命名 4.7.3 函數參數 4.7.4 錯誤處理 第5章 風格 5.1 純C API 5.1.1 ANSI C特性 5.1.2 ANSI C API的優點 5.1.3 使用ANSI C編寫API 5.1.4 從C++中調用C函數 5.1.5 案例研究:FMOD C API 5.2 面向對象的C++ API 5.2.1 面向對象API的優點 5.2.2 面向對象API的缺點 5.2.3 案例研究:FMOD C++ API 5.3 基於模板的API 5.3.1 基於模板的API示例 5.3.2 模板與宏 5.3.3 基於模板的API的優點 5.3.4 基於模板的API的缺點 5.4 數據驅動型API 5.4.1 數據驅動型Web服務 5.4.2 數據驅動型API的優點 5.4.3 數據驅動API的缺點 5.4.4 支持可變參數列表 5.4.5 案例研究:FMOD數據驅動型API 第6章 C++用法 6.1 命名空間 6.2 構造函數和賦值 6.2.1 控制編譯器生成的函數 6.2.2 定義構造函數和賦值操作符 6.2.3 explicit關鍵字 6.3 const正確性 6.3.1 方法的const正確性 6.3.2 參數的const正確性 6.3.3 返回值的const正確性 6.4 模板 6.4.1 模板術語 6.4.2 隱式實例化API設計 6.4.3 顯式實例化API設計 6.5 操作符重載 6.5.1 可重載的操作符 6.5.2 自由操作符與成員操作符 6.5.3 為類添加操作符 6.5.4 操作符語法 6.5.5 轉換操作符 6.6 函數參數 6.6.1 指針與引用參數 6.6.2 默認參數 6.7 避免使用#define定義常量 6.8 避免使用友元 6.9 導出符號 6.10 編碼規範 第7章 性能 7.1 通過const引用傳遞輸入參數 7.2 最小化#include依賴 7.2.1 避免&"無所不包型&"頭文件 7.2.2 前置聲明 7.2.3 冗餘的#include警戒語句 7.3 聲明常量 7.4 初始化列表 7.5 內存優化 7.6 除非需要,勿用內聯 7.7 寫時複製 7.8 迭代元素 7.8.1 迭代器 7.8.2 隨機訪問 7.8.3 數組引用 7.9 性能分析 7.9.1 時效性分析 7.9.2 基於內存的分析 7.9.3 多線程分析 第8章 版本控制 8.1 版本號 8.1.1 版本號的意義 8.1.2 小眾的編號方案 8.1.3 提供API的版本信息 8.2 軟件分支策略 8.2.1 分支策略 8.2.2 分支方針 8.2.3 API和並行分支 8.2.4 文件格式和並行發佈產品 8.3 API的生命週期 8.4 兼容性級別 8.4.1 向後兼容性 8.4.2 功能兼容性 8.4.3 源代碼兼容性 8.4.4 二進制兼容性 8.4.5 向前兼容性 8.5 怎樣維護向後兼容性 8.5.1 添加功能 8.5.2 修改功能 8.5.3 棄用功能 8.5.4 移除功能 8.6 API審查 8.6.1 API審查的目的 8.6.2 API預發佈審查 8.6.3 API預提交審查 第9章 文檔 9.1 編寫文檔的理由 9.1.1 定義行為 9.1.2 為接口契約編寫文檔 9.1.3 告知行為的改變 9.1.4 文檔涉及的內容 9.2 文檔的類型 9.2.1 自動生成的API文檔 9.2.2 概述文檔 9.2.3 示例和教程 9.2.4 發佈說明 9.2.5 授權信息 9.3 文檔可用性 9.4 使用Doxygen 9.4.1 配置文件 9.4.2 注釋風格和命令 9.4.3 API注釋 9.4.4 文件注釋 9.4.5 類注釋 9.4.6 方法注釋 9.4.7 枚舉注釋 9.4.8 帶有文檔的示例頭文件 第10章 測試 10.1 編寫測試的理由 10.2 API測試的類型 10.2.1 單元測試 10.2.2 集成測試 10.2.3 性能測試 10.3 編寫良好的測試 10.3.1 良好測試的特徵 10.3.2 測試對象 10.3.3 關注測試工作量 10.3.4 與QA一起工作 10.4 編寫可測試的代碼 10.4.1 測試驅動開發 10.4.2 樁對象和模擬對象 10.4.3 測試私有代碼 10.4.4 使用斷言 10.4.5 契約編程 10.4.6 記錄並重放功能 10.4.7 支持國際化 10.5 自動化測試工具 10.5.1 自動化測試框架 10.5.2 代碼覆蓋率 10.5.3 缺陷跟蹤系統 10.5.4 持續構建系統 第11章 腳本化 11.1 添加腳本綁定 11.1.1 擴充或嵌入 11.1.2 腳本化的優點 11.1.3 語言兼容性問題 11.1.4 跨越語言障礙 11.2 腳本綁定技術 11.2.1 Boost Python 11.2.2 SWIG 11.2.3 Python-SIP 11.2.4 COM自動化 11.2.5 CORBA 11.3 使用Boost Python添加Python綁定 11.3.1 構建Boost Python 11.3.2 使用Boost Python包裝C++ API 11.3.3 構造函數 11.3.4 擴充Python API 11.3.5 C++中的繼承 11.3.6 跨語言多態 11.3.7 支持迭代器 11.3.8 綜合應用 11.4 使用SWIG添加Ruby綁定 11.4.1 使用SWIG包裝C++ API 11.4.2 調整Ruby API 11.4.3 構造函數 11.4.4 擴充Ruby API 11.4.5 C++中的繼承 11.4.6 跨語言多態 11.4.7 綜合應用 第12章 可擴展性 12.1 通過插件擴展 12.1.1 插件模型概覽 12.1.2 插件系統設計問題 12.1.3 以C++實現插件 12.1.4 插件API 12.1.5 插件示例 12.1.6 插件管理器 12.1.7 插件版本控制 12.2 通過繼承擴展 12.2.1 添加功能 12.2.2 修改功能 12.2.3 繼承與STL 12.2.4 繼承與枚舉 12.2.5 訪問者模式 12.2.6 禁止子類化 12.3 通過模板擴展 12.3.1 基於策略的模板 12.3.2 奇特的遞歸模板模式 附錄A 庫 參考文獻 索引

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區