最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

如何檢查API的質(zhì)量?
1、可理解性
2、一致性
3、可見性
4、簡(jiǎn)單的任務(wù)應(yīng)該有簡(jiǎn)單的方案
5、保護(hù)投資

API設(shè)計(jì)技巧一:
不要把類中的字段直接對(duì)外公布,而應(yīng)該放置在內(nèi)部。最好讓外部用戶只能通過set、Get方法來(lái)訪問字段,千萬(wàn)不要將字段直接公布出來(lái)。

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

API設(shè)計(jì)技巧二:
使用工廠方法而不是直接使用構(gòu)造函數(shù)來(lái)創(chuàng)建一個(gè)對(duì)象。

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

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

API設(shè)計(jì)技巧五:
盡可能通過友元的方式來(lái)公開功能。為了讓用戶更加簡(jiǎn)單明了地使用好你的API,就不要再你的API中公開太多的方法,不要給用戶犯錯(cuò)的機(jī)會(huì)。

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

相關(guān)文章

  • Matlab繪制有趣的羅盤時(shí)鐘的示例代碼

    Matlab繪制有趣的羅盤時(shí)鐘的示例代碼

    這篇文章主要介紹了如何利用Matlab實(shí)現(xiàn)繪制有趣的羅盤時(shí)鐘,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定的幫助,需要的可以參考一下
    2023-01-01
  • 將正小數(shù)轉(zhuǎn)化為2-9進(jìn)制小數(shù)的實(shí)現(xiàn)方法

    將正小數(shù)轉(zhuǎn)化為2-9進(jìn)制小數(shù)的實(shí)現(xiàn)方法

    本篇文章對(duì)正小數(shù)轉(zhuǎn)化為2-9進(jìn)制小數(shù)的實(shí)現(xiàn)方法進(jìn)行了介紹,需要的朋友參考下
    2013-05-05
  • Qt網(wǎng)絡(luò)編程實(shí)現(xiàn)TCP通信

    Qt網(wǎng)絡(luò)編程實(shí)現(xiàn)TCP通信

    這篇文章主要為大家詳細(xì)介紹了Qt網(wǎng)絡(luò)編程實(shí)現(xiàn)TCP通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語(yǔ)言實(shí)現(xiàn)循環(huán)隊(duì)列基本操作

    C語(yǔ)言實(shí)現(xiàn)循環(huán)隊(duì)列基本操作

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)循環(huán)隊(duì)列基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 一篇文章詳解Qt中如何訪問數(shù)據(jù)庫(kù)

    一篇文章詳解Qt中如何訪問數(shù)據(jù)庫(kù)

    Qt是一個(gè)廣泛使用的跨平臺(tái)應(yīng)用程序框架,它提供了許多功能,包括數(shù)據(jù)庫(kù)訪問,這篇文章主要給大家介紹了關(guān)于Qt中如何訪問數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • C++對(duì)象內(nèi)存分布詳解(包括字節(jié)對(duì)齊和虛函數(shù)表)

    C++對(duì)象內(nèi)存分布詳解(包括字節(jié)對(duì)齊和虛函數(shù)表)

    下面小編就為大家?guī)?lái)一篇C++對(duì)象內(nèi)存分布詳解(包括字節(jié)對(duì)齊和虛函數(shù)表)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2016-12-12
  • C++學(xué)習(xí)筆記之類成員指針

    C++學(xué)習(xí)筆記之類成員指針

    類成員指針時(shí)指可以指向類的非靜態(tài)成員的指針,下面這篇文章主要給大家介紹了關(guān)于C++類成員指針的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • C/C++ 左移<<, 右移>>的作用及說明

    C/C++ 左移<<, 右移>>的作用及說明

    這篇文章主要介紹了C/C++ 左移<<, 右移>>的作用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • c++代碼各種注釋示例詳解

    c++代碼各種注釋示例詳解

    大家好,本篇文章主要講的是c++代碼各種注釋示例詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評(píng)論

永平县| 延吉市| 高州市| 富川| 金华市| 内乡县| 偃师市| 松滋市| 浮梁县| 二连浩特市| 合水县| 原平市| 临潭县| 垫江县| 华容县| 江都市| 轮台县| 湛江市| 沁源县| 阿克陶县| 苏尼特左旗| 进贤县| 新昌县| 卓尼县| 中方县| 沙河市| 弋阳县| 新晃| 巫溪县| 清河县| 诸暨市| 六盘水市| 洞口县| 镇沅| 祁东县| 中卫市| 保靖县| 安塞县| 盐城市| 马关县| 赞皇县|