日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

怎样设计接口?

發(fā)布時(shí)間:2025/7/25 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎样设计接口? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

怎樣設(shè)計(jì)接口?

??? 眾所周知,接口是提供給其它模塊或者系統(tǒng)使用的一種約定或者規(guī)范。因此接口必需要保
證足夠的穩(wěn)定性和易用性。這是設(shè)計(jì)接口的基本要求。

1.穩(wěn)定性

??? 接口必須相對(duì)穩(wěn)定,否則將導(dǎo)致接口的使用者和提供者為了適應(yīng)新接口而不斷改動(dòng)接口
的實(shí)現(xiàn),可能反復(fù)進(jìn)行無(wú)用功,嚴(yán)重時(shí)影響整個(gè)軟件開(kāi)發(fā)進(jìn)度。那么怎樣保證設(shè)計(jì)的接口相
對(duì)穩(wěn)定呢?
??? 首先,接口的語(yǔ)義必須明白。包含接口調(diào)用方法、接口名稱、參數(shù)的類型和名稱。抽象
的接口名稱或者參數(shù)名稱使人困惑或者理解錯(cuò)誤。例如以下例:
??? History::SetAttribute
??? 設(shè)置歷史記錄的屬性,初看不知道該接口要做什么。除非History的屬性非常多否則沒(méi)有
必要設(shè)計(jì)這種接口。
??? ioctl
??? C庫(kù)中的ioctl,事實(shí)上非常難用原因是須要設(shè)置項(xiàng)太多,每一個(gè)項(xiàng)的參數(shù)又不太一致,接口使
用者的壓力就較大了。可是接口設(shè)計(jì)者也是不得已而為之,因?yàn)镮O的設(shè)置接口的應(yīng)用情況較
多,假設(shè)每一個(gè)設(shè)置接口都單獨(dú)提供一個(gè)接口則會(huì)導(dǎo)致非常多的接口,另外就是保證接口的相
對(duì)穩(wěn)定,採(cǎi)用抽象的數(shù)據(jù)的接口便于移植和穩(wěn)定。
??? 因此,明白的接口語(yǔ)義例外情況就是就是對(duì)于輔助功能,假設(shè)須要較多接口,則能夠合
成一個(gè)接口,採(cǎi)用不同參數(shù)區(qū)分(如windows中的窗體處理過(guò)程類型的定義也是這種情況)。
??? 其次,採(cǎi)用版本號(hào)定義來(lái)區(qū)分接口的差異。比方提供接口版本號(hào)查詢功能,接口實(shí)現(xiàn)著提供
接口版本號(hào)的查詢功能。

2.易用性

??? 接口是提供給第三方使用的,較難用的接口會(huì)導(dǎo)致接口使用者的抱怨。
??? 如:
??????? SetCookie(void* handle, const CookieParam& param);
??????? GetCookie(void* handle, CookieParam& param);
??? 此接口名稱的意義還是比較明白的,可是參數(shù)CookieParam過(guò)于抽象,將導(dǎo)致接口的調(diào)用
者在使用接口時(shí),須要將基本數(shù)據(jù)類型的值組成一個(gè)CookieParam類型,然后才干調(diào)用接口。
這是一種糟糕的接口設(shè)計(jì)。既不便于使用又不便于編譯器優(yōu)化(待確認(rèn))。
??? 假設(shè)該為以下的接口則較easy使用
??????? SetCookie(void* handle, const URL& url, const String& cookie);
??????? GetCookie(void* handle, const URL& url, String cookie);
??? 除非接口的參數(shù)個(gè)數(shù)超過(guò)5個(gè),否則最好採(cǎi)用基本數(shù)據(jù)類型作為參數(shù)。超過(guò)5個(gè)參數(shù)的函數(shù)
一方面給調(diào)用者帶來(lái)困難,參數(shù)排列組合的情況過(guò)多,還有一方面就是不利于編譯器優(yōu)化時(shí)採(cǎi)用
寄存器傳遞參數(shù)。

3.怎樣設(shè)計(jì)接口?

??? 採(cǎi)用OOD思想,即面向?qū)ο蟮乃枷?#xff0c;提供類接口或者COM接口。
??? 對(duì)于C函數(shù)接口怎樣設(shè)計(jì)呢?事實(shí)上和C++接口設(shè)計(jì)原則一樣,也採(cǎi)用面向?qū)ο蟮乃枷?#xff0c;僅僅是
將類設(shè)計(jì)成結(jié)構(gòu),公共的成員函數(shù)變?yōu)槿值暮瘮?shù),私有的成員函數(shù)變?yōu)閟tatic函數(shù)就可以。
函數(shù)接口的第一參數(shù)就相當(dāng)于C++中的this指針就可以。

4.接口設(shè)計(jì)的其它要求

??? * 規(guī)范性:主要是接口設(shè)計(jì)的代碼規(guī)范,這是最主要的要求。同一時(shí)候考慮C接口命名污染的
????????????? 問(wèn)題。一般C接口都會(huì)在接口前加上公司或者模塊的標(biāo)識(shí)。
??? * 可移植性:對(duì)于須要在多平臺(tái)實(shí)現(xiàn)的接口須要考慮接口本身的可移植性,因此最少使用
??????????????? 對(duì)于系統(tǒng)依賴的類型作為接口的參數(shù)類型或者返回值類型。
??? * 魯棒性:接口須要有適度的魯棒性,主要是指可以在多種情況下接口都能實(shí)現(xiàn)統(tǒng)一的效
????????????? 果,不會(huì)隨著調(diào)用者傳入的參數(shù)的變化而導(dǎo)致接口的輸出出現(xiàn)違背接口語(yǔ)義的
????????????? 情況出現(xiàn)。
??? * 安全性:接口定義時(shí)須要嚴(yán)格限制參數(shù)的讀寫權(quán)限,假設(shè)僅僅能是僅僅讀的參數(shù)一定要設(shè)置
????????????? 成const,以免出現(xiàn)非法使用。
??? * 兼容性:這是接口擴(kuò)充的原則,必須保證同一個(gè)接口實(shí)現(xiàn)后向兼容前一版本號(hào)的使用。擴(kuò)
????????????? 充的同類接口也能兼容老接口的實(shí)現(xiàn)。

5.怎樣擴(kuò)展接口?

??? 1.採(cǎi)用版本號(hào)特性,不同版本號(hào)的接口實(shí)現(xiàn)能夠同意有差異,可是提供版本號(hào)查詢功能;
??? 2.序號(hào)表示新增的接口,如SetCookie、SetCookie1、SetCookie2

轉(zhuǎn)載于:https://www.cnblogs.com/gcczhongduan/p/4203376.html

總結(jié)

以上是生活随笔為你收集整理的怎样设计接口?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。