來自Google資深工程師的API設計最佳實踐
來自Google資深工程師Joshua Bloch的分享:API設計最佳實踐
為什麼API設計如此重要?API是一個公司最重要的資產。
為什麼API的設計對程式設計師如此重要?
API一旦釋出,出於相容性考慮,不能輕易地隨心所欲進行修改,比如刪除引數。
從API的上帝 - 設計者的視角出發,有助於提高程式碼質量。
一個優秀的API應該滿足下列標準:
易學易用,甚至是自描述的,不需文件也能讓新手快速上手。不易造成誤解。後續維護者易於理解,滿足開閉原則 - 能夠很容易進行擴充套件。
如何設計一個好的API
首先應該從收集需求出發。注意結合API實現的複雜度一起考慮。
作為第一步,首先給出需求規格文件,一頁即可:
別指望你的API能讓所有人滿意。也不要指望釋出後,它不會出任何錯誤——那是不可能的。
API也應該遵循單一職責:如果你發覺很難根據你的API實現的功能給它取個合適的名字,這是一個不好的訊號,很多時候說明你的API裡面做了太多事情——試著把它們拆成多個API。
資訊封裝 - 公有類儘量避免暴露公有欄位出去,最大化資訊隱藏
API命名藝術 - API的名稱也是一門語言。
API和文件的關係
合理使用繼承和子類,不要濫用里氏替換原則
採用fail fast 策略,儘可能早地丟擲錯誤訊息:
API的資料都應該允許使用者通過字串的方式訪問
慎用過載
選用合適的API引數和返回型別
API裡的引數順序也很有講究
避免冗長的引數列表,引數如果超過3個,使用者就需要通過閱讀文件才能消費了。
儘量返回不需要呼叫者進行異常處理的引數,比如空陣列或集合,而不是null
API設計裡的和異常處理相關的最佳實踐
API重構的最佳實踐
API設計和Thread-local相關的最佳實踐
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2565103/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 13 個設計 REST API 的最佳實踐RESTAPI
- 設計出色API的最佳實踐與原則 - JamesAPI
- Java程式設計師的八個最佳實踐Java程式設計師
- 《我為培訓正名-來自一線資深工程師的聲音》工程師
- 阿里研究員谷樸:API 設計最佳實踐的思考阿里API
- 阿里巴巴資深大資料工程師:大資料處理實踐阿里大資料工程師
- Java的API設計實踐JavaAPI
- 收藏 | Google 釋出關於機器學習工程的最佳實踐Go機器學習
- 介面自動化測試的最佳工程實踐(ApiTestEngine)API
- 資料庫設計的十個最佳實踐資料庫
- Bilibili資深運維工程師:DCDN在遊戲應用加速中的實踐運維工程師遊戲
- Java資深工程師面試之chatGPT自問自答版Java工程師面試ChatGPT
- 設計微服務的最佳實踐微服務
- RESTful API 最佳實踐RESTAPI
- restful api最佳實踐RESTAPI
- Google:12 條 Golang 最佳實踐Golang
- B站資深運維工程師:DCDN在遊戲應用加速中的實踐運維工程師遊戲
- TypeScript 資料模型層程式設計的最佳實踐TypeScript模型程式設計
- MaxCompute表設計最佳實踐
- 來自前端工程師的Google開發者大會2018參會總結前端工程師Go
- google Guava包RateLimiter使用最佳實踐GoGuavaMIT
- Lighthouse與Google的移動端最佳實踐Go
- 綜合Twitter、Github等各大網站API設計經驗:RESTful API實用設計與最佳實踐 - Vinay SahniGithub網站APIREST
- 你的Android資深工程師進階之路Android工程師
- Google 家的這份工程實踐文件,你不看?Go
- react 設計模式與最佳實踐React設計模式
- Vue 工程化最佳實踐Vue
- Vue工程化最佳實踐Vue
- 混沌工程最佳實踐 - 尋交流
- 前端工程化最佳實踐前端
- 資料庫設計中的6個最佳實踐步驟資料庫
- 7個API安全最佳實踐API
- 究竟,怎樣才能算是“資深”工程師?工程師
- 資深Oracle最佳化工程師常用的34個指令碼彙總(附下載)Oracle工程師指令碼
- API介面設計的未來趨勢:探索技術方向與實踐方案API
- Django RESTful API設計與實踐指南DjangoRESTAPI
- Python程式設計規範+最佳實踐Python程式設計
- vSAN 設計、部署、運維最佳實踐運維