乙個簡單API設計

2021-09-16 20:44:28 字數 874 閱讀 1119

用乙個紅綠燈來學習jsapi的設計

css

#trafficlight > li

#trafficlight span

#trafficlight.stop li:nth-child(1) span

#trafficlight.wait li:nth-child(2) span

#trafficlight.pass li:nth-child(3) span

html結構

第乙個版本的js

var el = document.getelementbyid('trafficlight')

function rest() , 2000)

}, 2000)

}window.onload = rest()

第乙個版本實現了紅綠燈功能,但是耦合性高+callback,使得**的可維護性、可擴充套件性降低

第二個版本

var state = ['wait', 'stop', 'pass'];

var stateindex = 0;

setinterval(function() , 2000)

第二個版本將狀態放到陣列裡,以後想改變順序,或者新增更多的狀態,只需要運算元組元素就可以了,當然這個版本仍有問題,封裝性不好,可以考慮將其放到乙個函式裡面,暴露出state和el給使用者
第三個版本

function start(el, statelist) , 2000)

}start(el, ['wait','stop','pass'])

如何設計乙個優秀的API

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

如何設計乙個優秀的API

判斷乙個api是否優秀,並不是簡單地根據第乙個版本給出判斷的,而是要看隨著時間的推移,該api是否還能存在,是否仍舊保持得不錯。槽糕的api介面各種各樣,但是好的api介面對於使用者來說必須滿足以下幾個點 易學習 有完善的文件及提供盡可能多的示例和可copy paste的 像其他設計工作一樣,你應該...

乙個簡單的dao設計

最近把框架裡的資料庫連線池做好了,整個dao差不多也算完成了 因為懶,所以部分資料庫驅動還沒寫 整個dao由連線物件和解析驅動兩個部分組成,大概就是下面這個樣子 連線物件主要實現如下方法 解析器的作用是將操作狀態轉化為sql語句,主要實現以下功能 其中insert,update,query,dele...