來自Google資深工程師的API設計最佳實踐

i042416發表於2019-01-28

來自Google資深工程師Joshua Bloch的分享:API設計最佳實踐

來自Google資深工程師的API設計最佳實踐

為什麼API設計如此重要?API是一個公司最重要的資產。

來自Google資深工程師的API設計最佳實踐

為什麼API的設計對程式設計師如此重要?

API一旦釋出,出於相容性考慮,不能輕易地隨心所欲進行修改,比如刪除引數。

從API的上帝 - 設計者的視角出發,有助於提高程式碼質量。

來自Google資深工程師的API設計最佳實踐

一個優秀的API應該滿足下列標準:

易學易用,甚至是自描述的,不需文件也能讓新手快速上手。不易造成誤解。後續維護者易於理解,滿足開閉原則 - 能夠很容易進行擴充套件。

來自Google資深工程師的API設計最佳實踐

如何設計一個好的API

首先應該從收集需求出發。注意結合API實現的複雜度一起考慮。

來自Google資深工程師的API設計最佳實踐

作為第一步,首先給出需求規格文件,一頁即可:

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

別指望你的API能讓所有人滿意。也不要指望釋出後,它不會出任何錯誤——那是不可能的。

來自Google資深工程師的API設計最佳實踐

API也應該遵循單一職責:如果你發覺很難根據你的API實現的功能給它取個合適的名字,這是一個不好的訊號,很多時候說明你的API裡面做了太多事情——試著把它們拆成多個API。

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

資訊封裝 - 公有類儘量避免暴露公有欄位出去,最大化資訊隱藏

來自Google資深工程師的API設計最佳實踐

API命名藝術 - API的名稱也是一門語言。

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

API和文件的關係

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

合理使用繼承和子類,不要濫用里氏替換原則

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

採用fail fast 策略,儘可能早地丟擲錯誤訊息:

來自Google資深工程師的API設計最佳實踐

API的資料都應該允許使用者通過字串的方式訪問

來自Google資深工程師的API設計最佳實踐

慎用過載

來自Google資深工程師的API設計最佳實踐

選用合適的API引數和返回型別

來自Google資深工程師的API設計最佳實踐

API裡的引數順序也很有講究

來自Google資深工程師的API設計最佳實踐

避免冗長的引數列表,引數如果超過3個,使用者就需要通過閱讀文件才能消費了。

來自Google資深工程師的API設計最佳實踐

儘量返回不需要呼叫者進行異常處理的引數,比如空陣列或集合,而不是null

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

API設計裡的和異常處理相關的最佳實踐

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

API重構的最佳實踐

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

API設計和Thread-local相關的最佳實踐

來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐
來自Google資深工程師的API設計最佳實踐

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

來自Google資深工程師的API設計最佳實踐


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2565103/,如需轉載,請註明出處,否則將追究法律責任。

相關文章