国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何設計一個優秀的API

開發 項目管理
到目前為止,已經負責API接近兩年了,這兩年中發現現有的API存在的問題越來越多,但很多API一旦發布后就不再能修改了,即時升級和維護是必須的。一旦API發生變化,就可能對相關的調用者帶來巨大的代價,用戶需要排查所有調用的代碼,需要調整所有與之相關的部分,這些工作對他們來說都是額外的。

到目前為止,已經負責API接近兩年了,這兩年中發現現有的API存在的問題越來越多,但很多API一旦發布后就不再能修改了,即時升級和維護是必須的。一旦API發生變化,就可能對相關的調用者帶來巨大的代價,用戶需要排查所有調用的代碼,需要調整所有與之相關的部分,這些工作對他們來說都是額外的。如果辛辛苦苦完成這些以后,還發現了相關的bug,那對用戶的打擊就更大。如果API經常發生變化,用戶就會失去對提供方失去信心,從而也會影響目前的業務。

但是我們為什么還要修改API呢?為了API看起來更加漂亮?為了提供更多功能?為了提供更好的性能?還是僅僅覺得到了改變了時候了?對于用戶來說,他們更愿意使用一個穩定但是看起來不那么時髦的API,這并不意味著我們不再改進API了。當糟糕的API帶來的維護成本越來越大時,我想就是我們去重構它的時候。

如果可以回頭重新再做一遍,那么我心目中的優秀的API應該是怎么樣的?

判斷一個API是否優秀,并不是簡單地根據***個版本給出判斷的,而是要看隨著時間的推移,該API是否還能存在,是否仍舊保持得不錯。槽糕的API接口各種各樣,但是好的API接口對于用戶來說必須滿足以下幾個點:

  • 易學習:有完善的文檔及提供盡可能多的示例和可copy-paste的代碼,像其他設計工作一樣,你應該應用最小驚訝原則
  • 易使用:沒有復雜的程序、復雜的細節,易于學習;靈活的API允許按字段排序、可自定義分頁、 排序和篩選等。一個完整的API意味著被期望的功能都包含在內。
  • 難誤用:對詳細的錯誤提示,有些經驗的用戶可以直接使用API而不需要閱讀文檔。

而對于開發人員來說,要求又是不一樣的:

  • 易閱讀:代碼的編寫只需要一次一次,但是當調試或者修改的時候都需要對代碼進行閱讀。
  • 易開發:個最小化的接口是使用盡可能少的類以及盡可能少的類成員。這樣使得理解、記憶、調試以及改變API更容易。

如何做到以上幾點,以下是一些總結:

1、 面向用例設計

如果一個API被廣泛使用了,那么就不可能了解所有使用該API的用戶。如果設計者希望能夠設計出被廣泛使用的API,那么必須站在用戶的角度來理解如何設計API庫,以及如何才能設計出這樣的API庫。

2、 采用良好的設計思路

在設計過程中,如果能按照下面的方式來進行設計,會讓這個API生命更長久

  • 面向用例的設計,收集用戶建議,把自己模擬成用戶,保證API設計的易用和合理
  • 保證后續的需求可以通過擴展的形式完成
  • ***版做盡量少的內容,由于新需求可以通過擴展的形式完成,因此盡量少做事情是抑制API設計錯誤的一個有效方案
  • 對外提供清晰的API和文檔規范,避免用戶錯誤的使用API,尤其是避免API(見***節)靠后級別的API被用戶知曉與誤用

除此之外,下面還列出了一些具體的設計方法:

  • 方法優于屬性
  • 工廠方法優于構造函數
  • 避免過多繼承
  • 避免由于優化或者復用代碼影響API
  • 面向接口編程
  • 擴展參數應當是便利的
  • 對組件進行合理定位,確定暴露多少接口
  • 提供擴展點

3、 避免極端的意見

在設計API的時候,一定要避免任何極端的意見,尤其是以下幾點:

  • 必須漂亮(API不一定需要漂亮)
  • API必須被正確地使用(用戶很難理解如何正確的使用API,API的設計者要充分考慮API被誤用的情況:如果一個API可能會被誤用,那么它一定會被誤用)
  • 必須簡單(我們總會面臨復雜的需求,能兩者兼顧的API是更好的API)
  • 必須高性能(性能可以通過其他手段優化,不應該影響API的設計)
  • 必須絕對兼容(盡管本文一直提到如何保證兼容,但是我們仍然要意識到,一些極少情況下會遇到的不兼容是可以容忍的)

4、 有效的API評審

API設計完成以后,需要經過周密的設計評審,評審的重點如下:

  • 用例驅動,評審前必須提供完善的使用用例,確保用例的合理性和完備性。
  • 一致性,是否與系統中其他模塊的接口風格一致,是否與對稱接口的設計一致。
  • 簡單明了,API應該簡單好理解,容易學習和使用的API才不容易被誤用,給我們帶來更多的麻煩。
  • API盡可能少,如果一個API可以暴露也可以不暴露,那么就不要暴露他,等到用戶真正有需求的時候再將它成為一個公開接口也不遲。
  • 支持持續改進,API是否能夠方便地通過擴展的方式增加功能和優化。

5、 提高API的可測試性

API需要是可測試的,測試不應依賴實現,測試充分的API,尤其是經過了嚴格的“兼容性整合測試”的API,更能保證在升級的過程中不出現兼容性問題。兼容性整合測試,是指一組測試用例集合,這組測試用例會站在使用者的立場上使用API。在API升級以后,再檢測這組測試用例是否能完全符合預期的通過測試,盡可能的發現兼容性問題。

6、 保證API的向后兼容

對于每一個API的設計者來說,都渴望做到“向后兼容”,因為不管是現在的API用戶,還是潛在的API用戶,都只信任那些可兼容的API。但向后兼容有多個層次上的意義,而且不同層次的向后兼容,也意味著不同的重要性和復雜度。

7、 保持逐步改善

過去我們總希望能將現有的“不合理”的設計完全推翻,然后按照現在“美好”的思路,重新設計這個API,但是在一段時間以后,又會碰到一樣的狀況,需要再推翻一次。 如果我們沒有有效的逐步改善的辦法,依靠推翻現有設計,重新設計API只能讓我們回到起點,然后重現之前的過程。 要有一套行之有效的持續改善的辦法來在API兼容的同時,改善API使之更好。

8、 把握API的生命周期

每一個API都是有生命周期的,我們需要讓API的生命周期更長,并且在API的生命周期結束時能讓其平滑的消亡。

  • 告訴用戶我們是如何設計的,避免誤用,提供指導,錯誤的使用往往是縮短API壽命的一大殺手
  • 提供試用期,API不可能一開始就是穩定,經過試用的API才能有更強的生命力
  • 為API分級:內部使用;二次開發使用;開發或試用中;穩定;棄用API。避免API被濫用的同時,我們可以通過調整API的級別,來擴大其影響力,也能更優雅的結束一個API的生命周期。

開發API的過程其實就是一個溝通交流的過程。溝通的雙方就是API用戶和API設計者。

9、 一些具體的實施方案

在一個API不可避免要消亡或者改變的時候,我們應該接受并且面對這個事實,下面列舉了幾種保證兼容性的前提下,對API進行調整的辦法:

  • 將API標記為棄用,重新建立一個新的API。如果一個API不可避免要被消亡,這是唯一的辦法。
  • 為其添加額外的參數或者參數選項來實現功能添加
  • 將現有API拆成兩部分,提供一個精簡的核心API,過去的API通過封裝核心API上實現。這通常用于解決用戶需要一個代碼精簡的版本時。
  • 在現有的API基礎上進行封裝,提供一個功能更豐富的包或者類

一些好的API示例:

  1. Flickr API,這里是文檔的示例,同時提供了一個非常方便的API測試工具
  2. Mediawiki API
  3. Ebay API,這里有一個非常詳盡的文檔示例

原文鏈接:http://www.biaodianfu.com/how-to-design-a-good-api.html

責任編輯:林師授 來源: 標點符
相關推薦

2020-09-22 07:50:23

API接口業務

2022-03-24 14:58:02

Java散列表編程語言

2022-03-14 10:02:03

散列表鏈表哈希表

2018-11-26 08:06:24

API網關億級

2019-11-26 09:42:36

代碼開發API

2014-08-13 19:14:26

2015-03-27 18:05:00

2011-06-13 20:44:06

SEO

2009-07-02 09:42:34

JSP程序員

2010-12-27 09:24:45

JSP程序員

2015-08-17 10:32:06

前端工程師優秀

2009-05-20 09:49:15

2021-06-22 08:49:37

設計組件組件庫貝殼平臺

2020-03-26 09:36:06

AB Test平臺的流量

2018-09-18 09:38:11

RPC遠程調用網絡通信

2024-04-24 10:38:22

2021-05-28 18:12:51

C++設計

2024-11-20 13:18:21

2013-08-15 10:00:07

產品產品經理優秀的產品

2021-06-08 07:32:01

框架Mock測試
點贊
收藏

51CTO技術棧公眾號

蜜桃导航-精品导航| 欧美多人爱爱视频网站| 狠狠噜天天噜日日噜| 日韩免费一级| 在线免费av一区| 精品国产三级a∨在线| 亚洲精品国模| 久热精品在线视频| 动漫一区二区| 在线观看日韩高清av| 国产小黄视频| 久久99国产精品久久| 日本在线观看一区| 99视频在线精品国自产拍免费观看| 日韩免费av片在线观看| mm视频在线视频| 亚洲黄色有码视频| 国产一二区在线| 91麻豆精品久久久久蜜臀| 精品亚洲成a人片在线观看| 亚洲色图.com| 97超碰国产一区二区三区| 国产精品亲子伦对白| 国产精品99久久久久久久久久久久 | 欧美日韩黄网站| 黄色国产精品| 久久在精品线影院精品国产| 深夜国产在线播放| 精品国产1区二区| 麻豆视频在线看| 欧美mv和日韩mv的网站| 色呦呦网站在线观看| 日韩欧美亚洲国产另类| 最近中文字幕免费mv2018在线| 91精品国产综合久久久蜜臀图片| 免费高清在线| 欧美剧在线免费观看网站| 国产精品186在线观看在线播放| 欧美成人一区二区三区| 涩涩涩在线视频| 日韩专区在线观看| 欧美日韩伦理| 亚欧洲精品在线视频免费观看| 国产一区在线观看麻豆| 免费在线观看的av网站| 亚洲最大的成人av| 日本三级在线观看网站| 欧美日韩爱爱视频| 国产亚洲精品v| 日日噜噜噜噜久久久精品毛片| 懂色av中文一区二区三区天美| 尤物视频在线看| 久久成年人免费电影| 日韩精品免费| 大伊香蕉精品视频在线| 亚洲成人精品在线观看| www.九色在线| 国产精品视频专区| 日韩国产精品91| 国产亚洲依依| 亚洲天堂av女优| 欧美日韩有码| 国产精品12345| 久久99久久精品| 日本一区二区免费高清视频| 亚洲人妖av一区二区| 自由日本语热亚洲人| av成人午夜| 亚洲手机成人高清视频| 国产99在线观看| 懂色一区二区三区av片| 亚洲成人资源网| 麻豆av在线| 午夜欧美大尺度福利影院在线看| 91久久精品国产91久久性色tv | 人成免费电影一二三区在线观看| 久久久国产亚洲精品| 亚洲另类欧美自拍| 欧美一级黄色影院| 国产成人高清在线| 成人免费在线视频网站| 图片一区二区| 日本欧美精品在线| 日韩理论片在线| 精品国产导航| 8x8x最新地址| 97视频在线观看视频免费视频| 国产在线精品一区二区三区不卡| 青青青国内视频在线观看软件| 久久久一本精品99久久精品| 91九色02白丝porn| 红桃视频国产精品| 欧美孕妇孕交xxⅹ孕妇交| 成人免费视频观看视频| 欧美精品久久久久久久多人混战 | 亚洲自拍偷拍色片视频| 91福利小视频| 免费在线观看成人| 日韩性xxx| 成年人午夜免费视频| 欧美精品久久久久a| 国产精品白丝在线| 国产一区二区三区四区大秀| 8888四色奇米在线观看| 久久久99精品视频| xxxxx成人.com| 亚洲一区二区三区在线播放| 1024成人| 成人知道污网站| 牛牛热在线视频| 亚洲欧美久久久久一区二区三区| 国产亚洲精品久久久久久| 26uuu精品一区二区| 亚洲精品二区三区| 韩国成人漫画| 色视频在线观看| 白白操在线视频| 国产精品99久久久久久人| 亚洲国产成人精品久久久国产成人一区| 成人毛片老司机大片| 欧美日韩一视频区二区| 色999久久久精品人人澡69| 日本天堂影院在线视频| 免费无码av片在线观看| 岛国一区二区三区高清视频| 国产成人精品一区二区| 亚洲美女性视频| 在线观看成人免费视频| 国产网红主播福利一区二区| 亚洲永久字幕| 国产综合自拍| 日韩精品诱惑一区?区三区| 亚洲日本va午夜在线电影| 国产经典一区| 99视频在线观看地址| 嫩草嫩草嫩草嫩草| 欧美中日韩在线| 亚洲乱码国产乱码精品天美传媒| 亚洲中国色老太| 国产精品一区二区三区不卡 | 国产精品网在线观看| av日韩久久| 国产999精品在线观看| a国产在线视频| aa国产成人| 乱插在线www| 桃子视频成人app| 精品成人18| 免费看成人吃奶视频在线| 国产精品流白浆在线观看| 亚洲一区电影| 欧美三级电影在线| 在线看片不卡| 裸体在线国模精品偷拍| 成人性色生活片| 一区二区三区四区不卡视频| 亚洲成精国产精品女| 欧美一区二区三区免费观看视频| 欧美一区二区视频网站| 亚洲欧美日韩中文视频| 色999日韩欧美国产| 国产成人综合av| 日本成人看片网址| 免费毛片网站在线观看| 麻豆福利视频| av在线最新| 精品久久电影| 精品亚洲成a人| 日本电影亚洲天堂一区| 岛国精品在线观看| 亚洲成aⅴ人片久久青草影院| 给我免费播放日韩视频| 黄色日韩在线| 91麻豆精品秘密| 欧美人狂配大交3d怪物一区| 精品国产一区久久久| 精品国产免费一区二区三区 | 第一会所sis001亚洲| 国产精品一卡二| 一区二区在线观看免费| 91精品啪在线观看国产60岁| 国产精品第8页| 精品久久久噜噜噜噜久久图片| 日韩精品成人av| 成人写真视频| 91丨porny丨蝌蚪视频| 精品久久久久久久久久久院品网| 日韩av电影在线网| 青青青在线观看视频| 羞羞的视频在线观看| 在线播放精品| 色菇凉天天综合网| 亚洲自拍小视频免费观看| 国产农村av| 欧美黄色录像| 中文字幕一区三区| 午夜精品福利在线观看| 超碰97人人射妻| 亚洲精品动态| 欧美日韩视频在线|