眾所周知,介面是提供給其它模組或者系統使用的一種約定或者規範。因此介面必需要保
證足夠的穩定性和易用性。這是設計介面的基本要求。
介面必須相對穩定,否則將導致介面的使用者和提供者為了適應新介面而不斷改動介面
的實現,可能反覆進行無用功,嚴重時影響整個軟體開發進度。那麼怎樣保證設計的介面相
對穩定呢?
首先,介面的語義必須明白。包含介面呼叫方法、介面名稱、引數的型別和名稱。抽象
的介面名稱或者引數名稱使人困惑或者理解錯誤。例如以下例:
history::setattribute
設定歷史記錄的屬性,初看不知道該介面要做什麼。除非history的屬性非常多否則沒有
必要設計這種介面。
ioctl
c庫中的ioctl,事實上非常難用原因是須要設定項太多,每乙個項的引數又不太一致,介面使
用者的壓力就較大了。可是介面設計者也是不得已而為之,因為io的設定介面的應用情況較
多,假設每乙個設定介面都單獨提供乙個介面則會導致非常多的介面,另外就是保證介面的相
對穩定,採用抽象的資料的介面便於移植和穩定。
因此,明白的介面語義例外情況就是就是對於輔助功能,假設須要較多介面,則能夠合
成乙個介面,採用不同引數區分(如windows中的窗體處理過程型別的定義也是這種情況)。
其次,採用版本號定義來區分介面的差異。比方提供介面版本號查詢功能,介面實現著提供
介面版本號的查詢功能。
介面是提供給第三方使用的,較難用的介面會導致介面使用者的抱怨。
如:setcookie(void* handle, const cookieparam& param);
getcookie(void* handle, cookieparam& param);
此介面名稱的意義還是比較明白的,可是引數cookieparam過於抽象,將導致介面的呼叫
者在使用介面時,須要將基本資料型別的值組成乙個cookieparam型別,然後才幹呼叫介面。
這是一種糟糕的介面設計。既不便於使用又不便於編譯器優化(待確認)。
假設該為以下的介面則較easy使用
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
怎樣設計介面?
眾所周知,介面是提供給其它模組或者系統使用的一種約定或者規範。因此介面必需要保 證足夠的穩定性和易用性。這是設計介面的基本要求。介面必須相對穩定,否則將導致介面的使用者和提供者為了適應新介面而不斷改動介面 的實現,可能反覆進行無用功,嚴重時影響整個軟體開發進度。那麼怎樣保證設計的介面相 對穩定呢?首...
怎樣設計介面?
眾所周知,介面是提供給其它模組或者系統使用的一種約定或者規範。因此介面必需要保 證足夠的穩定性和易用性。這是設計介面的基本要求。介面必須相對穩定,否則將導致介面的使用者和提供者為了適應新介面而不斷改動介面 的實現,可能反覆進行無用功,嚴重時影響整個軟體開發進度。那麼怎樣保證設計的介面相 對穩定呢?首...
怎樣設計介面?
眾所周知,介面是提供給其它模組或者系統使用的一種約定或者規範。因此介面必需要保 證足夠的穩定性和易用性。這是設計介面的基本要求。介面必須相對穩定,否則將導致介面的使用者和提供者為了適應新介面而不斷改動介面 的實現,可能反覆進行無用功,嚴重時影響整個軟體開發進度。那麼怎樣保證設計的介面相 對穩定呢?首...