PorkFat Finding Neverland

Archive for April, 2007

适合 JavaScript 库作者的规则

04.23.2007 · Posted in JavaScript, 译稿

这是 Dean Edwards 在一个月前写在他的 blog 上的一篇文章。我正在学 JavaScript,也许要用到一个 JavaScript 库,这些规则刚好从侧面教我分析那些作者的做法,不至于面对许多库茫然无措,因此翻译过来共勉 PS: 原文有很多外部链接,推荐去看看 http://dean.edwards.name/weblog/2007/03/rules/ 适合 JavaScript 库作者的规则 大约六个月之前,我在 base2 的工作启动前写了此文。当时我决定先不发布,因为我认为它听起来有点华而不实。经再三思量,这些规则还不坏,并且我最终保留下来。因此在这里献上我在十月份为自己写的规则。 不乱入(Be unobtrusive; hlb 的台式翻译XD) 我的 HTML 不应该去适应你的 JavaScript。 禁止 Object.prototype 这条相当重要,所以需要一条完全针对它的规则。对象是构建 JavaScript 功能的基础积木,别胡乱摆弄。 不要过分扩展 你对 JavaScript 内建对象的扩展越少越好。别理解错,原生 JavaScript 对象的有用的方法是有点少,你会感到被迫增加一两条你自己的,但是“一两条”对于创造性的(库)程序员来说是不够的。就此停手吧,加你需要的就好。你对 JavaScript 内建对象的扩展越少,你和其它库的冲突越少。 跟随标准 作为一个库的作者,你在定义 JavaScript 代码的模式。在程序设计语言中模式是虚弱的征兆。记住,JavaScript 和文档对象模型在频繁更新,如果你正要“修正”某处,那么注意看看它是否还没被修正。考虑现成的解决方法,如果你跟随标准,就紧随它们(举例来说:别遗漏 forEach 方法的参数) 或者跟随主导 Mozilla 主导 JavaScript。这门语言的创造者 Brendan Eich,不断在发展它,新的语言特征在 Mozilla 浏览器中比任何其它浏览器更早可用。如果你要增加语言特征到 JavaScript,那么首先关注 Mozilla 标准。例如:如果你想要扩展 Array 来允许一个枚举方法,那就调用 forEach 方法来代替 each。如果你确实提供缺少的语言特征,那么紧随已存在的标准(见上文)。 灵活可塑 如果我要修改行为而不改变你的库的源码呢?那有多容易?不够容易的话,做得更容易些。 管理内存 人们担心内存泄露,尽力为之。 摆脱浏览器嗅探 貌似浏览器厂商将永远通过添加新的特性来竞争。 作为一个库的作者,你必须跟得上最入潮的流行。偶尔浏览 Ajaxian 可不够好,你必须奴隶般地读每一个 blog 来寻找下一个 ...