比如API約束了調(diào)用順序,約束了接口之間的某種調(diào)用關(guān)系,并且這些約束是一般開(kāi)發(fā)者不能提前思考清楚的。
比如地圖API里可以給標(biāo)注添加一個(gè)標(biāo)題,當(dāng)鼠標(biāo)移到這個(gè)標(biāo)注上時(shí),就會(huì)顯示這個(gè)標(biāo)題,實(shí)際上,這是給標(biāo)注的DOM容器元素增加了title屬性。開(kāi)發(fā)者在使用過(guò)程中可能會(huì)使用下面的寫法:
var marker = new BMap.Marker(map.getCenter()); // 創(chuàng)建一個(gè)標(biāo)注對(duì)象,并給定一個(gè)坐標(biāo)點(diǎn) marker.setTitle("百度大廈"); // 標(biāo)注創(chuàng)建完了,給它加個(gè)標(biāo)題 map.addOverlay(marker); // 好了,添加到地圖上
當(dāng)我們把鼠標(biāo)移到標(biāo)注上,“百度大廈”四個(gè)字并沒(méi)有顯示,哪出問(wèn)題了?API文檔那個(gè)上明明寫了這個(gè)接口的作用呀?實(shí)際上,只有下面的寫法才能實(shí)現(xiàn):
var marker = new BMap.Marker(map.getCenter()); // 創(chuàng)建一個(gè)標(biāo)注對(duì)象,并給定一個(gè)坐標(biāo)點(diǎn) map.addOverlay(marker); // 先添加到地圖上 marker.setTitle("百度大廈"); // 再給它加個(gè)標(biāo)題
其中原因很簡(jiǎn)單,由于標(biāo)題是添加在DOM元素上的,那么在調(diào)用addOverlay方法之前,DOM元素并沒(méi)有創(chuàng)建出來(lái),setTitle發(fā)現(xiàn)DOM元素不存在就直接return了,也沒(méi)有把這個(gè)title存起來(lái),那么后來(lái)再添加到地圖上也就看不到標(biāo)題了。
這里,API就存在一個(gè)調(diào)用順序上的約定,使用者可能在經(jīng)歷了失敗時(shí)候才會(huì)知道這個(gè)約定,好在調(diào)整起來(lái)并不費(fèi)力,至少代碼沒(méi)有白寫。
一個(gè)好的API應(yīng)該盡量減少這種不合理的約定。另外,如果想減少開(kāi)發(fā)者的思考代價(jià),一份結(jié)構(gòu)清晰的文檔是必不可少的。
Penetrability
How does the API facilitate exploration, analysis, and understanding of its components, and how does a targeted developer go about retrieving what is needed.
這個(gè)維度是指開(kāi)發(fā)者需要理解API的底層實(shí)現(xiàn)細(xì)節(jié)到一個(gè)什么程度以及對(duì)這些細(xì)節(jié)的理解程度,也就是說(shuō)API的透明程度(penetrability)如何。
比如,一個(gè)封裝了很多底層接口的API需要使用者理解這些底層實(shí)現(xiàn)細(xì)節(jié),否則API就不能正常工作。
API Elaboration
To what extend must th eAPI be adapted to meet th eneeds of a targeted developer?
開(kāi)發(fā)者使用API來(lái)完成任務(wù),其中一些任務(wù)僅僅通過(guò)調(diào)用幾個(gè)API的現(xiàn)有接口就能完成,另一些任務(wù)可能需要繼承API的一個(gè)類,并重載一些方法來(lái)完成,還有一些任務(wù)可能需要開(kāi)發(fā)者自己編寫接口的具體實(shí)現(xiàn)來(lái)完成。
這個(gè)維度描述了API暴露出來(lái)的擴(kuò)展性,即API有哪些接口直接使用的,有哪些需要開(kāi)發(fā)者自己繼承擴(kuò)展的,有哪些是開(kāi)發(fā)者自行創(chuàng)建的。
當(dāng)用戶使用地圖API時(shí),有些功能可能是API中沒(méi)有提供的,這時(shí)候就需要開(kāi)發(fā)者自己寫一些模塊來(lái)處理(就像線上的百度地圖)。
對(duì)于一些簡(jiǎn)單的任務(wù),API要盡可能提供現(xiàn)成的接口供開(kāi)發(fā)者使用。另有一部分開(kāi)發(fā)者對(duì)接口的靈活性要求更高,希望通過(guò)擴(kuò)展現(xiàn)有的API來(lái)實(shí)現(xiàn)自己的功能。API最好能同時(shí)滿足這些不同的需求
出處:百度泛用戶體驗(yàn)
責(zé)任編輯:bluehearts
上一頁(yè) 認(rèn)知維度與API的可用性評(píng)估 [5] 下一頁(yè) 認(rèn)知維度與API的可用性評(píng)估 [7]
◎進(jìn)入論壇網(wǎng)頁(yè)制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。
|