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

如何做到API兼容

開發(fā) 前端
本文主要介紹什么是API,以及API兼容的重要性,最終給出方案如何評估API,以及如何做到API兼容。

Whats API?

API的全稱是application programming interface。

而很多時候,程序開發(fā)者僅僅把函數(shù)、類的接口做為API的一部分,而忽略了其他重要的編程接口。

事實上,在前端Javscript編程中常見的API包括:

◆ 函數(shù)、類接口,包括參數(shù),返回值,函數(shù)對外部對象(常常是DOM)的具體操作等

◆ 網(wǎng)絡(luò)接口協(xié)議,如和后端交互的JSON、XML數(shù)據(jù)格式,或者script回調(diào)中的函數(shù)名

◆ 樣式以及HTML接口

◆ 外部依賴(對瀏覽器具體特性的依賴)

◆ 一些無意泄露的內(nèi)部實現(xiàn)

越往后的API,越隱晦,越不容易受到重視,但是一旦這些API發(fā)生變化,可能會導(dǎo)致調(diào)用方出現(xiàn)不符合預(yù)期甚至程序直接報錯的情況。

Why API cannot be changed?

API是程序協(xié)同開發(fā)的重要保證,API的用戶希望API的提供方提供的是一段功能明確、接口明了的程序。更重要的是,用戶更期望在程序升級以后,他們能夠不經(jīng)思考地升級這些第三方代碼。

一旦上述提到的5個API中的任何一個發(fā)生變化,可能會給他們帶來巨大的代價,用戶需要排查所有調(diào)用的代碼,需要更改一些協(xié)議,需要調(diào)整所有與之相關(guān)的部分,這些工作對他們來說都是額外的,在預(yù)期之外的。如果辛辛苦苦完成這些以后,還在測試過程中發(fā)現(xiàn)了相關(guān)的bug,那對用戶的打擊就更大了。

如果API經(jīng)常發(fā)生變化,用戶就會失去對這段程序的信任,他們會更傾向自己獲得源代碼以后,按照自己的需求進(jìn)行修改,自行維護(hù)一個內(nèi)部的API比調(diào)用一個不斷發(fā)生變化的外部API要容易接受的多,雖然這樣做和我們協(xié)同開發(fā)、模塊化開發(fā)的初衷是完全相悖的。

***,我們?yōu)槭裁匆薷腁PI呢?為了API看起來更加漂亮?為了提供更多有趣的功能?還是僅僅我們覺得到了改變了時候了?對于用戶來說,他們更愿意使用一個穩(wěn)定但是看起來不那么時髦的API,而不是使用一個很時髦,但是會經(jīng)常變動的API。在這個問題上,項目開發(fā)者是實用派。但這并不意味著我們不再改進(jìn)API了,在后面,我會具體介紹如何能讓API保持穩(wěn)定的同時,讓API持續(xù)改進(jìn)。

Quality of API

在正式說兼容性之前,首先要明確一下,什么是好的API,因為導(dǎo)致API的不兼容的根源總是來自一個想法:期望通過這次改變把API變得更好。

容易理解

如果一個API不能讓大多數(shù)使用者快速學(xué)會,這一定不是一個好的API。 比如iOS的滑動解鎖,老人和小孩都能都能一次解鎖,而Nokia的經(jīng)典兩鍵解鎖,你懂的。

一致性

一致性能大大降低用戶的學(xué)習(xí)和使用成本,用戶過去的努力學(xué)習(xí),能持續(xù)的收效。

容易查找和學(xué)習(xí)

API必須要有文檔,并且介紹清晰,提供盡可能多的示例和可copy-paste的代碼,降低用戶的使用門檻。

提供簡單的方案

API要能解決復(fù)雜的問題,提供很多可配置項,但是對于那些最常見的case,如果有一個簡單的方案供給用戶使用,這樣能大大提高API的可用性

保護(hù)用戶在API上的已有工作

用戶過去在調(diào)用API、基于API開發(fā)所做的工作,這樣才能給用戶帶來價值的同時,不破壞他們過去的勞動成果。

如何保證API的兼容

采用良好的設(shè)計思路

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

◆ 面向用例的設(shè)計,收集用戶建議,把自己模擬成用戶,保證API設(shè)計的易用和合理

◆ 保證后續(xù)的需求可以通過擴(kuò)展的形式完成

◆ ***版做盡量少的內(nèi)容,由于新需求可以通過擴(kuò)展的形式完成,因此盡量少做事情是抑制API設(shè)計錯誤的一個有效方案

◆ 對外提供清晰的API和文檔規(guī)范,避免用戶錯誤的使用API,尤其是避免API(見***節(jié))靠后級別的API被用戶知曉與誤用

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

◆ 方法優(yōu)于屬性

◆ 工廠方法優(yōu)于構(gòu)造函數(shù)

◆ 避免過多繼承

◆ 避免由于優(yōu)化或者復(fù)用代碼影響API

◆ 面向接口編程

◆ 擴(kuò)展參數(shù)應(yīng)當(dāng)是便利的

◆ 對組件進(jìn)行合理定位,確定暴露多少接口

◆ 提供擴(kuò)展點

有效的API評審

API設(shè)計完成以后,需要經(jīng)過周密的設(shè)計評審,評審的重點如下:

◆ 用例驅(qū)動,評審前必須提供完善的使用用例,確保用例的合理性和完備性。

◆ 一致性,是否與系統(tǒng)中其他模塊的接口風(fēng)格一致,是否與對稱接口的設(shè)計一致。

◆ 簡單明了,API應(yīng)該簡單好理解,容易學(xué)習(xí)和使用的API才不容易被誤用,給我們帶來更多的麻煩。

◆ API盡可能少,如果一個API可以暴露也可以不暴露,那么就不要暴露他,等到用戶真正有需求的時候再將它成為一個公開接口也不遲。

◆ 支持持續(xù)改進(jìn),API是否能夠方便地通過擴(kuò)展的方式增加功能和優(yōu)化。

把握API的生命周期

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

◆ 告訴用戶我們是如何設(shè)計的,避免誤用,提供指導(dǎo),錯誤的使用往往是縮短API壽命的一大殺手

◆ 提供試用期,API不可能一開始就是穩(wěn)定,經(jīng)過試用的API才能有更強(qiáng)的生命力

◆ 為API分級:內(nèi)部使用;二次開發(fā)使用;開發(fā)或試用中;穩(wěn)定;棄用API。避免API被濫用的同時,我們可以通過調(diào)整API的級別,來擴(kuò)大其影響力,也能更優(yōu)雅的結(jié)束一個API的生命周期。

保持API的逐步改善

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

提高API的可測試性

API需要是可測試的,測試不應(yīng)依賴實現(xiàn),測試充分的API,尤其是經(jīng)過了嚴(yán)格的兼容性整合測試的API,更能保證在升級的過程中不出現(xiàn)兼容性問題。

兼容性整合測試,是指一組測試用例集合,這組測試用例會站在使用者的立場上使用API。在API升級以后,再檢測這組測試用例是否能完全符合預(yù)期的通過測試,盡可能的發(fā)現(xiàn)兼容性問題。

避免極端的意見

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

◆ 必須漂亮

◆ API必須被正確地使用(用戶很難理解如何正確的使用API,API的設(shè)計者要充分考慮API被誤用的情況:如果一個API可能會被誤用,那么它一定會被誤用)

◆ 必須簡單(我們總會面臨復(fù)雜的需求,能兩者兼顧的API是更好的API)

◆ 必須高性能(性能可以通過其他手段優(yōu)化,不應(yīng)該影響API的設(shè)計)

◆ 必須絕對兼容(盡管本文一直提到如何保證兼容,但是我們?nèi)匀灰庾R到,一些極少情況下會遇到的不兼容是可以容忍的)

一些具體的實施方案

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

◆ 將API標(biāo)記為棄用,重新建立一個新的API。如果一個API不可避免要被消亡,這是唯一的辦法。

◆ 為其添加額外的參數(shù)或者參數(shù)選項來實現(xiàn)功能添加

◆ 將現(xiàn)有API拆成兩部分,提供一個精簡的核心API,過去的API通過封裝核心API上實現(xiàn)。這通常用于解決用戶需要一個代碼精簡的版本時。

◆ 在現(xiàn)有的API基礎(chǔ)上進(jìn)行封裝,提供一個功能更豐富的包或者類

小結(jié)

設(shè)計一個保持兼容的API是很困難的。在這之前,作者需要理解什么是API,以及如何評估API的質(zhì)量以后,通過良好的設(shè)計思路以及改進(jìn)方法,來保證API的向后兼容。

其他

事實上,Tangram base庫自從1.3.4版本以后,就已經(jīng)做到了API的向后兼容,如果對Tangram感興趣,可以前往Tangram網(wǎng)站查閱。

如果你對Javascript 的API兼容有什么自己的見解,歡迎留言討論。

原文:http://www.baiduux.com/blog/2011/06/21/javscript-api-compatible/

【編輯推薦】

  1. API設(shè)計新思維:用流暢接口構(gòu)造內(nèi)部DSL
  2. 百度地圖API之如何制作公交導(dǎo)航
  3. 百度地圖API開發(fā)指南
  4. 新浪微博API開發(fā)簡介之用戶授權(quán)(PHP基礎(chǔ)篇)
  5. 谷歌拼音輸入法擴(kuò)展API開發(fā)指南
責(zé)任編輯:陳貽新 來源: 百度泛用戶體驗
相關(guān)推薦

2011-06-22 09:45:46

JavaScriptAPI

2011-12-15 09:47:12

API

2009-11-20 11:37:11

Oracle完全卸載

2019-08-08 10:18:15

運維架構(gòu)技術(shù)

2016-01-08 10:03:07

硅谷通吃互聯(lián)網(wǎng)

2024-12-04 13:52:30

2022-09-09 08:41:43

Netty服務(wù)端驅(qū)動

2010-03-30 10:44:05

Nginx啟動

2021-05-24 10:55:05

Netty單機(jī)并發(fā)

2017-11-14 08:25:36

數(shù)據(jù)庫MySQL安全登陸

2018-01-12 15:17:40

數(shù)據(jù)庫水平分庫數(shù)據(jù)遷移

2010-05-20 17:29:02

IIS安全

2016-06-15 11:06:27

云計算AWS

2023-11-30 10:13:17

TensorRT架構(gòu)

2021-06-04 05:54:53

CIO數(shù)據(jù)驅(qū)動數(shù)字轉(zhuǎn)型

2018-05-15 16:19:39

程序員bug代碼

2018-03-14 09:49:35

數(shù)據(jù)庫遷移

2018-11-21 10:25:35

硬件故障自愈運維

2015-12-02 11:30:37

京東搜索京東推薦

2010-01-13 21:58:02

綜合布線數(shù)據(jù)安全
點贊
收藏

51CTO技術(shù)棧公眾號

丁香五精品蜜臀久久久久99网站 | 伊人精品在线| 樱花草国产18久久久久| 一区二区三区四区欧美日韩| 美女在线一区二区| 国产精品理论在线观看| 亚洲欧洲国产伦综合| 草草久视频在线观看电影资源| 国产黄大片在线观看画质优化| 国产一区二区h| 91精品国产乱码| 99re在线视频免费观看| 日韩一区二区免费看| 欧美在线一级视频| 992tv国产精品成人影院| 欧美最猛性xxxxx直播| 美女一区二区三区视频| 成人午夜sm精品久久久久久久| 欧美色道久久88综合亚洲精品| 日韩人妻精品无码一区二区三区| 日韩电影一二三区| 91手机在线播放| 亚洲黄色录像| 亚洲一卡二卡三卡四卡| 日本精品一区二区三区在线播放视频| 性欧美极品xxxx欧美一区二区| 视频一区在线视频| 日韩精品在线影院| a√资源在线| 久久国产99| 91热福利电影| 成人羞羞动漫| 国产精品久久国产精品99gif| 亚洲精品一区在线| 欧美精品一区三区| 超清福利视频| 久久久久国产免费免费| 久久成人精品电影| 色8久久影院午夜场| 欧美绝品在线观看成人午夜影视| 在线观看av中文| 亚洲成人av在线电影| av日韩中文字幕| 国产成人影院| 668精品在线视频| 神马久久高清| 日本成人在线不卡视频| 亚洲欧洲国产一区| 激情国产在线| 久久婷婷国产综合精品青草| 欧美人与动牲交xxxxbbbb| 九九久久精品视频| 天天想你在线观看完整版电影免费| 韩国三级电影一区二区| 日韩成人手机在线| 国产一区二区精品福利地址| 91精品国产91久久久久久最新| 精品国产18久久久久久洗澡| 欧美在线视频一二三| 欧美jizz| 精品亚洲一区二区三区四区五区高| 爽好多水快深点欧美视频| 影音先锋欧美在线| 一不卡在线视频| 一区二区欧美日韩视频| 极品日韩久久| 国产福利视频在线观看| 精品一级视频| 一本大道久久精品懂色aⅴ| 草草久久久无码国产专区| 美女激情网站| 午夜欧美性电影| 日韩五码在线| 日韩一本精品| 国内成人精品2018免费看| 91网站在线观看免费| 久久久久久影视| 日韩av一区二区在线影视| 久久免费视频网站| 国产精品久久久乱弄| 久久久久成人精品免费播放动漫| 在线成人av观看| 亚洲精品中文字幕乱码三区| 日韩一本精品| av成人免费在线| 日韩mv欧美mv国产网站| 久久99国产综合精品女同| 成人在线观看免费网站| 日韩高清不卡在线| wwwwww欧美| 久久新电视剧免费观看| 美女网站在线观看| 亚洲精品一区av在线播放| 日本欧美高清| 91视频精品在这里| 最新av网址在线观看| 亚洲大胆视频| 成人av在线播放观看| 综合在线观看色| 免费高清完整在线观看| 日韩视频中文字幕| 国家队第一季免费高清在线观看| 欧美日韩国产一二三| 东方欧美亚洲色图在线| 国产精品成人va在线观看| 美女精品网站| 亚洲男人天堂色| 欧美一区二区高清| 成人性生交大片免费看中文视频| 91久久极品少妇xxxxⅹ软件 | 久久国产麻豆精品| 欧美黑人孕妇孕交| 亚洲欧美日韩成人| 欧美破处大片在线视频| 男女av免费观看| 日韩欧美中文一区二区| 香港日本韩国三级| 久久精品男人天堂av| 久青草视频在线播放| 亚洲成人av在线电影| 久久国产三级| 日韩精品中文字幕在线| 激情婷婷综合| koreanbj精品视频一区| 6080午夜不卡| 国产黄色小视频在线| 国产精品久久久乱弄| 婷婷综合五月| 色婷婷综合网站| 久久中文字幕电影| 美女国产在线| 91探花福利精品国产自产在线| 91年精品国产| 草草视频在线| 国产日韩精品推荐| 亚洲午夜精品17c| 香蕉免费一区二区三区在线观看| 久久91精品国产91久久跳| 久久精品道一区二区三区| 李宗瑞系列合集久久| 欧美黑人国产人伦爽爽爽| 精品一二三四区| 成人直播在线| 国产成人精品一区二区三区福利| 中文亚洲字幕| 亚洲国产精品久久久久久女王| 亚洲国产精品一区制服丝袜| 免费中文日韩| 欧美午夜精品伦理| 日韩国产一区二区三区| 美女av电影| 久久理论片午夜琪琪电影网| 国产东北露脸精品视频| 欧美xxxhd| 亚洲精品一区二区三区av| 欧美老年两性高潮| 精品96久久久久久中文字幕无| 在线视频毛片| 亚洲一级在线观看| 国产精品久久久久久久浪潮网站| 三级成人黄色影院| 一区二区视频国产| 精品卡一卡二卡三卡四在线| 国产一区导航| 成人短视频在线观看| 日本一区视频在线观看| 精品国产乱码久久| 国产一区二区福利| **在线精品| 中国丰满人妻videoshd| 美日韩精品视频免费看| 久久综合色天天久久综合图片| 美女网站视频一区| 日韩一级在线免费观看| 亚洲精品一二三| 四虎5151久久欧美毛片| 日本欧美亚洲| 波多野结衣一区二区三区在线观看 | 国产成人精品网址| 99视频高清| 欧美日韩免费观看一区三区| 欧美91精品| 国产a级一级片| 日韩亚洲成人av在线| 久久这里只有精品首页| 竹菊久久久久久久| 亚洲男人网站| 国产精品精品一区二区三区午夜版 | 一区二区三区我不卡| 在线国产精品视频| 久久综合一区二区| 国产91精品对白在线播放| a√资源在线| 成人在线免费高清视频| 国内精品400部情侣激情| 色成人在线视频| 国产乱理伦片在线观看夜一区| 在线人成日本视频| 成人勉费视频| 国产麻豆久久|