這樣做極大地滿足了開發(fā)者對(duì)靈活性的要求,但也要求開發(fā)者需要掌握更多的接口和內(nèi)容(DOM編程、高級(jí)JavaScript編程、API使用方法等等),同時(shí)代碼的數(shù)量和復(fù)雜程度也增大了。
再來看下面的例子,有個(gè)開發(fā)者希望創(chuàng)建一個(gè)地圖,并且在地圖上添加一些控件,使地圖界面看起來和百度地圖(http://map.baidu.com)的界面一樣,那么以下代碼可以實(shí)現(xiàn)這個(gè)需求:
示例三
// 依次創(chuàng)建導(dǎo)航控件、縮略地圖和比例尺 map.addControl(new BMap.StandardMapControl()); map.addControl(new BMap.OverviewMapControl()); map.addControl(new BMap.ScaleControl());
上面的代碼通過多次添加不同的控件使該地圖界面與百度地圖保持一致。如果我們提供一個(gè)抽象層次更高的接口呢?可能會(huì)有如下的調(diào)用方式:
示例四
map.addTypicalContorls();
上面代碼將之前的三句addControl換成了一句addTypicalContorls,添加多個(gè)控件的任務(wù)完全由addTypicalContorls方法內(nèi)部去完成。
通過上面的示例我們看出,示例一和示例三的抽象程度屬于中等,示例二的抽象程度低,示例四的抽象程度最高。
接口的抽象層次越高,開發(fā)者入門越容易,使用的接口數(shù)量少,但接口的靈活性低;反過來,接口的抽象層次越低,開發(fā)者需要了解的東西就越多,運(yùn)用的接口數(shù)量也越多,代碼寫起來越復(fù)雜,但好處是接口靈活。
相信大部分開發(fā)者在剛接觸一套新的API時(shí),都喜歡通過少量的接口就能完成一些任務(wù),這樣學(xué)習(xí)成本低,開發(fā)起來起來也更輕松容易。
隨著入門者逐漸使用API,他們當(dāng)中就會(huì)出現(xiàn)一些具有一定開發(fā)經(jīng)驗(yàn)且在靈活性上有很高要求的人,這就要求API能夠提供一些層次較低、靈活程度較高的接口。 這些人也希望通過多個(gè)接口的組合來幫助自己實(shí)現(xiàn)功能。
在一套大型的API或者一個(gè)framework當(dāng)中,需要考慮為不同的開發(fā)者提供不同抽象層次的接口,最大程度滿足不同的需求。
Learning Style
Learning Style在CD中是沒有的,微軟將這個(gè)維度引入了進(jìn)來,它的解釋為:
What are the learning requirements posed by the API, and what are the learning styles available to a targeted develper.
開發(fā)者用API是來完成一些列的任務(wù)的,那么以下兩種不同的完成方式確定了不同的學(xué)習(xí)風(fēng)格。
如果開發(fā)者完成任務(wù)需要少量的接口,并且每個(gè)接口之間相互依賴的程度較低,那么我們說API支持一種漸進(jìn)的少量的學(xué)習(xí)方式。
也就是說,開發(fā)者僅需要里了解與自己任務(wù)相關(guān)的接口,并且通過循序漸進(jìn)的方式進(jìn)行學(xué)習(xí)。
如果開發(fā)者完成任務(wù)需要大量的接口,并且每個(gè)接口之間關(guān)聯(lián)復(fù)雜,那么我們說API需要一種由上至下或者一種結(jié)構(gòu)化的學(xué)習(xí)方式。
也就是說,在用API完成任務(wù)之前,開發(fā)者需要了解API不同的接口以及它們之間的關(guān)聯(lián)關(guān)系,同時(shí)可能還需要了解整個(gè)API的結(jié)構(gòu)和其他一些新概念。
出處:百度泛用戶體驗(yàn)
責(zé)任編輯:bluehearts
上一頁(yè) 認(rèn)知維度與API的可用性評(píng)估 [2] 下一頁(yè) 認(rèn)知維度與API的可用性評(píng)估 [4]
◎進(jìn)入論壇網(wǎng)頁(yè)制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。
|