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

2021-09-24 08:52:18 字數 939 閱讀 5813

來自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相關的最佳實踐

Google工程師批評Google 可悲的馬後炮

2011 10 13 05 15 22 閱讀 31次 pathetic afterthought google軟體工程師史蒂夫 耶格 steve yegge 周二晚上公開發表文章,後來文章被撤銷,儘管如此,他的話仍然迴盪在網路。史蒂夫 耶格的文章顯然只是想與內部人分享,但因為失誤而公開。文章談及了自...

網易 資深Android開發工程師

網易杭州研究院是網易集團設立的唯一的研究院機構,承擔網易集團先進技術研究的職責,為集團業務提供技術領先的技術支撐平台,同時負責以技術為核心的商業化業務的開拓。主要職責如下 1.負責網易易測的安卓底層技術研究與攻關 2.負責網易易測相關功能的設計 開發與優化。職位要求 1.三年以上安卓開發經驗 2.熟...

Google高效工程師的秘密

我正式走上職業生涯是 2011 年秋天,完成了博士學業,躊躇滿志地加入了 google。當時,我的理想是做 google 裡生產率最高的軟體工程師。為此,我列了乙個高效工程師名單,看他們每天提交的 是些什麼,以從中學習高效的工作方法。這個名單裡有 jeff dean,sanjay ghemawat,...