核心提示:JavaScript庫開發(fā)者們的規(guī)則1. 保持無侵入性 我的HTML標記不想知道你的JavaScript代碼。 2. 嚴禁修改和擴展Object.prototype! 這條很重要,因此需要一條完全針對它的規(guī)則。對象是JavaScript功能的基本構(gòu)建模塊,不要搞亂它們。 3. 不要過分擴展 對JavaScript內(nèi)建對象的擴展越少越好。別誤解我的意思。JavaScript的原生對象中有用的方法是有點少,有時不得不添加一兩個自己的方法。但是,對于富有創(chuàng)造力的(庫)程序員來說,添加這“一兩個”方法是不夠的。然而,請停下來!添加需要的就好。你對JavaScript內(nèi)建對象的擴展越少,你的代碼與其它框架產(chǎn)生的沖突的概率就越少。
4. 跟隨標準 作為一個庫的開發(fā)者,你定義JavaScript代碼的模式。設(shè)計模式是編程語言能力弱的體現(xiàn)。 記住,JavaScript和DOM還在不斷地被規(guī)格化。如果你想“修正”某些東西,最好先看看是否已經(jīng)被修正,考慮已有的解決方案。 如果你跟隨標準,就緊緊的跟著標準走(比如:別遺漏了forEach 方法的某個參數(shù))。
5. 或著跟隨主導(dǎo) Mozilla引領(lǐng)著JavaScript. JavaScript語言的創(chuàng)建者Brendan Eich, 還在持續(xù)開發(fā)。和其它瀏覽器相比,在Mozilla瀏覽器中這些新的語言特性最先可用。 如果你想給JavaScript添加新的語言特性,可以先瞧瞧Mozilla標準。例如,你想給Array對象擴展一個枚舉方法時,最好把這個方法取名為forEach而不是each. 如果你的確想提供尚不存在的語言特性,那么請緊緊跟隨著現(xiàn)有的標準走(參考上面的例子)。
6. 保持靈活 如果我想修改行為而不改變你的源碼,這容易不?如果不夠容易,讓它更容易些。
7. 管理內(nèi)存 大家擔心內(nèi)存泄漏,你要盡力而為。
8. 淘汰瀏覽器嗅探 貌似瀏覽器廠商們將永遠通過添加新特性來競爭;-) 作為庫的開發(fā)者,你要跟得上最新的潮流。偶爾瀏覽一次Ajaxian是不夠的,你必須奴隸般地閱讀每一篇博客文章以找到下一個hack. 瀏覽器嗅探會上癮的。
9. 小巧更佳 各種JavaScript庫已經(jīng)成熟。某些庫已經(jīng)應(yīng)用在主流網(wǎng)站上。但并不是所有人都裝了2MBit的DSL帶寬,因此請保持庫的小巧。更好的做法是,提供一個打包頁面,允許按照我的需求有效地構(gòu)建自己的庫。
10. 第十條規(guī)則 Good ol’ tenth rule(好像是一個口語用法,不知道怎么翻譯好). 你可以始終依賴第十條規(guī)則。這就是: 保持可預(yù)測。 我應(yīng)該可以猜到你的方法是用來干嘛的。如果我不知道某個方法的名字,也應(yīng)該能讓我猜出來。
11. 附加規(guī)則
文檔,惱人但絕對是需要去做的。
你用的命名空間越多,我就越難記住,就如你的電話號碼一樣。
記住:可能有數(shù)百萬人將執(zhí)行你的代碼。