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

來源:互聯網
上載者:User

前言:本文書寫的格式與其它不相同。本文題目說是關於C++ API的思考,其實也不僅僅是C++,對於其它語言同樣適用。

API實際是指Application Programming Interface,API。對API是一套用來控制Windows的各個組件的外觀和行為的一套預先定義的Windows函數。在C++中我認為:一個API就是一堆類以及類中方法和欄位的集合。
並不是所有的簽名都是API的一部分,未公開的部分(private)內容不是API,它不對外承諾相容性。API廣泛定義:凡是有利於在“無緒”的狀態下把一個大的系統以組件整合的方法拼裝出來的東西都屬於API。

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

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

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

使用方法訪問欄位要好於直接存取欄位。如果你在編寫API的時候遵守這一建議,那麼可以在這個API的下一個版本中對方法的具體實現進行很多改動,如添加資料的驗證和校正、覆蓋一個方法等,還可以做一些大的變化。如果直接使用指端就不能做上述改動。

API設計技巧二:
使用Factory 方法而不是直接使用建構函式來建立一個對象。

使用Factory 方法建立對象的好處:
1、Factory 方法的傳回值並不一定是宣告類型的執行個體,它可以是它子類的執行個體。使用Factory 方法可以更好的體現物件導向語言中多態的優勢,代碼也會顯得更加簡潔。
2、每次返回的對象並不一定都是新建立的對象,完全可以將其緩衝。相比之下,每次調用建構函式都會建立一個執行個體,而一個Factory 方法可以緩衝以前建立的對象,並重用他們,從而節省了記憶體。
3、對同步控制,在Factory 方法中可以將建立對象前後的相應代碼進行統一處理。建構函式對這一種情況就無能為力。

API設計技巧三:
讓所有的內容不可改,如果不考慮讓其擁有子類,就應該讓這個類不能被繼承。
強烈推薦:不公開建構函式,轉而提供Factory 方法

API設計技巧四:
避免濫用set方法,在不部分情況下set方法是多餘的。
建議:小心API中的每一個不必要的set方法

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.