用乙個紅綠燈來學習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...