當(dāng)前位置: 首頁(yè) > 設(shè)計(jì)知識(shí) > 企業(yè)官網(wǎng)設(shè)計(jì) > 什么是API?如何做到API兼容以及評(píng)估API?
API的全稱是application programming interface。
而很多時(shí)候,程序開(kāi)發(fā)者僅僅把函數(shù)、類的接口做為API的一部分,而忽略了其他重要的編程接口。
事實(shí)上,在前端Javscript編程中常見(jiàn)的API包括:
越往后的API,越隱晦,越不容易受到重視,但是一旦這些API發(fā)生變化,可能會(huì)導(dǎo)致調(diào)用方出現(xiàn)不符合預(yù)期甚至程序直接報(bào)錯(cuò)的情況。
API是程序協(xié)同開(kāi)發(fā)的重要保證,API的用戶希望API的提供方提供的是一段功能明確、接口明了的程序。更重要的是,用戶更期望在程序升級(jí)以后,他們能夠“不經(jīng)思考”地升級(jí)這些第三方代碼。
一旦上述提到的5個(gè)API中的任何一個(gè)發(fā)生變化,可能會(huì)給他們帶來(lái)巨大的代價(jià),用戶需要排查所有調(diào)用的代碼,需要更改一些協(xié)議,需要調(diào)整所有與之相關(guān)的部分,這些工作對(duì)他們來(lái)說(shuō)都是額外的,在預(yù)期之外的。如果辛辛苦苦完成這些以后,還在測(cè)試過(guò)程中發(fā)現(xiàn)了相關(guān)的bug,那對(duì)用戶的打擊就更大了。
如果API經(jīng)常發(fā)生變化,用戶就會(huì)失去對(duì)這段程序的信任,他們會(huì)更傾向自己獲得源代碼以后,按照自己的需求進(jìn)行修改,自行維護(hù)一個(gè)內(nèi)部的API比調(diào)用一個(gè)不斷發(fā)生變化的外部API要容易接受的多,雖然這樣做和我們協(xié)同開(kāi)發(fā)、模塊化開(kāi)發(fā)的初衷是完全相悖的。
最后,我們?yōu)槭裁匆薷腁PI呢?為了API看起來(lái)更加漂亮?為了提供更多有趣的功能?還是僅僅我們覺(jué)得到了改變了時(shí)候了?對(duì)于用戶來(lái)說(shuō),他們更愿意使用一個(gè)穩(wěn)定但是看起來(lái)不那么時(shí)髦的API,而不是使用一個(gè)很時(shí)髦,但是會(huì)經(jīng)常變動(dòng)的API。在這個(gè)問(wèn)題上,項(xiàng)目開(kāi)發(fā)者是實(shí)用派。但這并不意味著我們不再改進(jìn)API了,在后面,我會(huì)具體介紹如何能讓API保持穩(wěn)定的同時(shí),讓API持續(xù)改進(jìn)。
在正式說(shuō)兼容性之前,首先要明確一下,什么是好的API,因?yàn)閷?dǎo)致API的不兼容的根源總是來(lái)自一個(gè)想法:“期望通過(guò)這次改變把API變得更好”。
容易理解
如果一個(gè)API不能讓大多數(shù)使用者快速學(xué)會(huì),這一定不是一個(gè)好的API。 比如iOS的滑動(dòng)解鎖,老人和小孩都能都能一次解鎖,而Nokia的經(jīng)典兩鍵解鎖,你懂的。
一致性
一致性能大大降低用戶的學(xué)習(xí)和使用成本,用戶過(guò)去的努力學(xué)習(xí),能持續(xù)的收效。
容易查找和學(xué)習(xí)
API必須要有文檔,并且介紹清晰,提供盡可能多的示例和可copy-paste的代碼,降低用戶的使用門檻。
提供簡(jiǎn)單的方案
API要能解決復(fù)雜的問(wèn)題,提供很多可配置項(xiàng),但是對(duì)于那些最常見(jiàn)的case,如果有一個(gè)簡(jiǎn)單的方案供給用戶使用,這樣能大大提高API的可用性
保護(hù)用戶在API上的已有工作
用戶過(guò)去在調(diào)用API、基于API開(kāi)發(fā)所做的工作,這樣才能給用戶帶來(lái)價(jià)值的同時(shí),不破壞他們過(guò)去的勞動(dòng)成果。
在設(shè)計(jì)過(guò)程中,如果能按照下面的方式來(lái)進(jìn)行設(shè)計(jì),會(huì)讓這個(gè)API生命更長(zhǎng)久
除此之外,下面還列出了一些具體的設(shè)計(jì)方法:
API設(shè)計(jì)完成以后,需要經(jīng)過(guò)周密的設(shè)計(jì)評(píng)審,評(píng)審的重點(diǎn)如下:
每一個(gè)API都是有生命周期的,我們需要讓API的生命周期更長(zhǎng),并且在API的生命周期結(jié)束時(shí)能讓其平滑的消亡。
過(guò)去我們總希望能將現(xiàn)有的“不合理”的設(shè)計(jì)完全推翻,然后按照現(xiàn)在“美好”的思路,重新設(shè)計(jì)這個(gè)API,但是在一段時(shí)間以后,又會(huì)碰到一樣的狀況,需要再推翻一次。 如果我們沒(méi)有有效的逐步改善的辦法,依靠推翻現(xiàn)有設(shè)計(jì),重新設(shè)計(jì)API只能讓我們回到起點(diǎn),然后重現(xiàn)之前的過(guò)程。 要有一套行之有效的持續(xù)改善的辦法來(lái)在API兼容的同時(shí),改善API使之更好。
API需要是可測(cè)試的,測(cè)試不應(yīng)依賴實(shí)現(xiàn),測(cè)試充分的API,尤其是經(jīng)過(guò)了嚴(yán)格的“兼容性整合測(cè)試”(見(jiàn)下文)的API,更能保證在升級(jí)的過(guò)程中不出現(xiàn)兼容性問(wèn)題。
兼容性整合測(cè)試,是指一組測(cè)試用例集合,這組測(cè)試用例會(huì)站在使用者的立場(chǎng)上使用API。在API升級(jí)以后,再檢測(cè)這組測(cè)試用例是否能完全符合預(yù)期的通過(guò)測(cè)試,盡可能的發(fā)現(xiàn)兼容性問(wèn)題。
在設(shè)計(jì)API的時(shí)候,一定要避免任何極端的意見(jiàn),尤其是以下幾點(diǎn):
在一個(gè)API不可避免要消亡或者改變的時(shí)候,畫冊(cè)設(shè)計(jì)公司我們應(yīng)該接受并且面對(duì)這個(gè)事實(shí),下面列舉了幾種保證兼容性的前提下,對(duì)API進(jìn)行調(diào)整的辦法:
版權(quán)聲明:以上文章信息來(lái)源于網(wǎng)絡(luò),等僅代表原作者本人的觀點(diǎn)。除了已經(jīng)標(biāo)注原創(chuàng)的文章外,其它文章版權(quán)和文責(zé)屬于原作者。文章中出現(xiàn)的商標(biāo)、專利和其他版權(quán)所有的信息,其版權(quán)屬于其合法持有人。對(duì)可以提供充分證據(jù)的侵權(quán)信息, 我們將在確認(rèn)后的1小時(shí)內(nèi)刪除。
本網(wǎng)站之聲明以及其修改權(quán)、更新權(quán)和最終解釋權(quán)均屬?gòu)V州古柏廣告策劃有限公司所有。
掃一掃關(guān)注古柏
GOOBAI AD.
Brand Whole Case Design
4000-882-993
shsyjz.cn
微信加好友咨詢
廣州古柏廣告策劃有限公司
地址:廣州市天河區(qū)東圃長(zhǎng)盛商務(wù)大廈B213-215
Copyright?2004-2020 GOOBAI Inc.All rights reserved
粵公網(wǎng)安備: 44010602001481號(hào)
備案號(hào):粵ICP備09222445號(hào)
與古柏對(duì)話
關(guān)注古柏