欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入C++中API的問題詳解

 更新時間:2013年05月16日 15:30:03   作者:  
本篇文章是對C++中API的問題進行了詳細的分析介紹,需要的朋友參考下
前言:本文書寫的格式與其它不相同。本文題目說是關于C++ API的思考,其實也不僅僅是C++,對于其它語言同樣適用。

API實際是指Application Programming Interface,應用程序編程接口。對API是一套用來控制Windows的各個部件的外觀和行為的一套預先定義的Windows函數(shù)。在C++中我認為:一個API就是一堆類以及類中方法和字段的集合。
并不是所有的簽名都是API的一部分,未公開的部分(private)內容不是API,它不對外承諾兼容性。API廣泛定義:凡是有利于在“無緒”的狀態(tài)下把一個大的系統(tǒng)以組件集成的方法拼裝出來的東西都屬于API

為什么要開發(fā)API?
我們希望將大塊的構建模塊“無緒”地集合成應用程序,一些構建模塊包含共享庫、框架、預先定義好的程序架構,以及這些內容的組合。

如何檢查API的質量?
1、可理解性
2、一致性
3、可見性
4、簡單的任務應該有簡單的方案
5、保護投資

API設計技巧一:
不要把類中的字段直接對外公布,而應該放置在內部。最好讓外部用戶只能通過set、Get方法來訪問字段,千萬不要將字段直接公布出來。

使用方法訪問字段要好于直接訪問字段。如果你在編寫API的時候遵守這一建議,那么可以在這個API的下一個版本中對方法的具體實現(xiàn)進行很多改動,如添加數(shù)據(jù)的驗證和校驗、覆蓋一個方法等,還可以做一些大的變化。如果直接使用指端就不能做上述改動。

API設計技巧二:
使用工廠方法而不是直接使用構造函數(shù)來創(chuàng)建一個對象。

使用工廠方法創(chuàng)建對象的好處:
1、工廠方法的返回值并不一定是聲明類型的實例,它可以是它子類的實例。使用工廠方法可以更好的體現(xiàn)面向對象語言中多態(tài)的優(yōu)勢,代碼也會顯得更加簡潔。
2、每次返回的對象并不一定都是新創(chuàng)建的對象,完全可以將其緩存。相比之下,每次調用構造函數(shù)都會創(chuàng)建一個實例,而一個工廠方法可以緩存以前創(chuàng)建的對象,并重用他們,從而節(jié)省了內存。
3、對同步控制,在工廠方法中可以將創(chuàng)建對象前后的相應代碼進行統(tǒng)一處理。構造函數(shù)對這一種情況就無能為力。

API設計技巧三:
讓所有的內容不可改,如果不考慮讓其擁有子類,就應該讓這個類不能被繼承。
強烈推薦:不公開構造函數(shù),轉而提供工廠方法
 
API設計技巧四:
避免濫用set方法,在不部分情況下set方法是多余的。
建議:小心API中的每一個不必要的set方法

API設計技巧五:
盡可能通過友元的方式來公開功能。為了讓用戶更加簡單明了地使用好你的API,就不要再你的API中公開太多的方法,不要給用戶犯錯的機會。

API設計技巧六:
避免暴露深層次繼承。一旦發(fā)現(xiàn)繼承體系超過兩層時,一定要打住,并多多思考一下,要弄清楚:“我到底設計API還是在復用代碼?”如果答案是后者,那么重新審視,并嚴格設計這個API,或者做好子類化的準備。

相關文章

  • C/C++實現(xiàn)手寫數(shù)字識別的示例詳解

    C/C++實現(xiàn)手寫數(shù)字識別的示例詳解

    這篇文章主要為大家詳細介紹了如何使用C/C++實現(xiàn)手寫數(shù)字識別,分別處理 32*32 文本數(shù)據(jù)集和mnist 28*28 png數(shù)據(jù)集,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-10-10
  • C語言數(shù)組與地址、數(shù)組名到底是什么詳解

    C語言數(shù)組與地址、數(shù)組名到底是什么詳解

    在寫代碼的時候,我們經常用到數(shù)組,那么有沒有想過數(shù)組名是什么呢?這篇文章主要給大家介紹了關于C語言數(shù)組與地址、數(shù)組名到底是什么的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • C語言數(shù)據(jù)結構順序表中的增刪改(尾插尾刪)教程示例詳解

    C語言數(shù)據(jù)結構順序表中的增刪改(尾插尾刪)教程示例詳解

    這篇文章主要為大家介紹了C語言數(shù)據(jù)結構順序表中的增刪改教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • 基于Matlab實現(xiàn)BP神經網絡交通標志識別

    基于Matlab實現(xiàn)BP神經網絡交通標志識別

    道路交通標志用以禁止、警告、指示和限制道路使用者有秩序地使用道路,?保障出行安全.若能自動識別道路交通標志,?則將極大減少道路交通事故的發(fā)生。本文將介紹基于Matlab實現(xiàn)BP神經網絡交通標志識別,感興趣的可以學習一下
    2022-01-01
  • 舉例講解C語言程序中對二叉樹數(shù)據(jù)結構的各種遍歷方式

    舉例講解C語言程序中對二叉樹數(shù)據(jù)結構的各種遍歷方式

    這篇文章主要介紹了舉例講解C語言程序中對二叉樹數(shù)據(jù)結構的各種遍歷方式,先序中序后序二叉樹遍歷幾乎成了最老生常談的數(shù)據(jù)結構基礎知識,的朋友可以參考下
    2016-04-04
  • C語言中pthread_exit和pehread_join的使用

    C語言中pthread_exit和pehread_join的使用

    pthread_exit用于強制退出一個線程,pthread_join用于阻塞等待線程退出,獲取線程退出狀態(tài),本文主要介紹了C語言中pthread_exit和pehread_join函數(shù)的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • C++封裝靜態(tài)鏈接庫和使用的詳細步驟

    C++封裝靜態(tài)鏈接庫和使用的詳細步驟

    這篇文章主要介紹了C++封裝靜態(tài)鏈接庫和使用,本文描述了怎么去把一個C++程序封裝成一個靜態(tài)庫并且如何去使用這些靜態(tài)庫,需要的朋友可以參考下
    2022-08-08
  • C++11并發(fā)編程:多線程std::thread

    C++11并發(fā)編程:多線程std::thread

    今天小編就為大家分享一篇關于C++11并發(fā)編程:多線程std::thread,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++中約數(shù)定理的實例詳解

    C++中約數(shù)定理的實例詳解

    這篇文章主要介紹了C++中約數(shù)定理的實例詳解的相關資料,需要的朋友可以參考下
    2017-07-07
  • C語言實現(xiàn)求定積分的方法

    C語言實現(xiàn)求定積分的方法

    這篇文章主要介紹了C語言實現(xiàn)求定積分的方法,涉及C語言操作相關數(shù)學函數(shù)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02

最新評論