如何設計介面?

2021-04-26 13:00:39 字數 1961 閱讀 4130

眾所周知,介面是提供給其他模組或者系統使用的一種約定或者規範。因此介面必須要保

證足夠的穩定性和易用性。這是設計介面的基本要求。

介面必須相對穩定,否則將導致介面的使用者和提供者為了適應新介面而不斷修改介面

的實現,可能重複進行無用功,嚴重時影響整個軟體開發進度。那麼如何保證設計的介面相

對穩定呢?

首先,介面的語義必須明確。包括介面呼叫方法、介面名稱、引數的型別和名稱。抽象

的介面名稱或者引數名稱使人困惑或者理解錯誤。如下例:

history::setattribute

設定歷史記錄的屬性,初看不知道該介面要做什麼。除非history的屬性很多否則沒有

必要設計這樣的介面。

ioctl

c庫中的ioctl,其實很難用原因是需要設定項太多,每個項的引數又不太一致,介面使

用者的壓力就較大了。但是介面設計者也是不得已而為之,由於io的設定介面的應用情況較

多,如果每個設定介面都單獨提供乙個介面則會導致非常多的介面,另外就是保證介面的相

對穩定,採用抽象的資料的介面便於移植和穩定。

因此,明確的介面語義例外情況就是就是對於輔助功能,如果需要較多介面,則可以合

成乙個介面,採用不同引數區分(如windows中的視窗處理過程型別的定義也是這種情況)。

其次,採用版本定義來區分介面的差異。比如提供介面版本查詢功能,介面實現著提供

介面版本的查詢功能。

介面是提供給第三方使用的,較難用的介面會導致介面使用者的抱怨。

如:setcookie(void* handle, const cookieparam& param);

getcookie(void* handle, cookieparam& param);

此介面名稱的意義還是比較明確的,但是引數cookieparam過於抽象,將導致介面的呼叫

者在使用介面時,需要將基本資料型別的值組成乙個cookieparam型別,然後才能呼叫介面。

這是一種糟糕的介面設計。既不便於使用又不便於編譯器優化(待確認)。

如果該為下面的介面則較容易使用

setcookie(void* handle, const url& url, const string& cookie);

getcookie(void* handle, const url& url, string cookie);

除非介面的引數個數超過5個,否則最好採用基本資料型別作為引數。超過5個引數的函式

一方面給呼叫者帶來困難,引數排列組合的情況過多,另一方面就是不利於編譯器優化時採用

暫存器傳遞引數。

採用ood思想,即物件導向的思想,提供類介面或者com介面。

對於c函式介面如何設計呢?其實和c++介面設計原則一樣,也採用物件導向的思想,只是

將類設計成結構,公共的成員函式變為全域性的函式,私有的成員函式變為static函式即可。

函式介面的第一引數就相當於c++中的this指標即可。

* 規範性:主要是介面設計的**規範,這是最基本的要求。同時考慮c介面命名汙染的

問題。一般c介面都會在界面前加上公司或者模組的標識。

* 可移植性:對於需要在多平台實現的介面需要考慮介面本身的可移植性,因此最少使用

對於系統依賴的型別作為介面的引數型別或者返回值型別。

* 魯棒性:介面需要有適度的魯棒性,主要是指能夠在多種情況下介面都能實現統一的效

果,不會隨著呼叫者傳入的引數的變化而導致介面的輸出出現違背介面語義的

情況出現。

* 安全性:介面定義時需要嚴格限制引數的讀寫許可權,如果只能是唯讀的引數一定要設定

成const,以免出現非法使用。

* 相容性:這是介面擴充的原則,必須保證同乙個介面實現後向相容前一版本的使用。擴

充的同類介面也能相容老介面的實現。

1.採用版本特性,不同版本的介面實現可以允許有差異,但是提供版本查詢功能;

2.序號表示新增的介面,如setcookie、setcookie1、setcookie2

如何設計介面

根據資料和經驗總結。要求 命名 命名規則和風格統 一 規範 命名清晰明確,不冗餘,不模糊 有意義 清晰和有意義的命名比簡略而模糊的命名更應受到青睞 功能職責明確 功能盡量單一 充分理由 不要隨便有新功能就增加新介面 無意義的介面只會增加維護的難度 將功能層和策略層分開 功能是基礎資料,不易變 策略是...

如何進行介面測試?如何設計介面測試用例?

1 引數入參型別校驗 入參型別與介面文件保持一致。2 引數必填項校驗 必填項不為空 null 3 引數長度 a 介面文件記錄的資料庫長度 b 需求文件要求的字段長度 4 引數取值範圍 a 列舉值,需校驗每個列舉值。特別是不同列舉值對應不同場景的情況 b 有限定範圍,可用邊界值進行設計測試用例。如密碼...

介面測試如何設計測試用例

介面測試一般考慮入參形式的變化和介面的業務邏輯,一般設計介面測試用例採用等價 類邊界值 場景法居多 介面測試設計測試用例的思路如下 1 介面業務邏輯測試?正例 介面邏輯測試是指根據業務邏輯 輸入引數 輸出值的描述,對正常輸入情況下 所得的輸出值是否正確的測試,也就是測試對外提供的介面服務是否正常工作...