保持无侵入性 我的HTML标记不想知道你的JavaScript代码
严禁修改和扩展Objectprototype! 这条很重要因此需要一条完全针对它的规则对象是JavaScript功能的基本构建模块不要搞乱它们
不要过分扩展 对JavaScript内建对象的扩展越少越好别误解我的意思JavaScript的原生对象中有用的方法是有点少有时不得不添加一两个自己的方法但是对于富有创造力的(库)程序员来说添加这“一两个”方法是不够的然而请停下来!添加需要的就好你对JavaScript内建对象的扩展越少你的代码与其它框架产生的沖突的概率就越少
跟随标准 作为一个库的开发者你定义JavaScript代码的模式设计模式是编程语言能力弱的体现 记住JavaScript和DOM还在不断地被规格化如果你想“修正”某些东西最好先看看是否已经被修正考虑已有的解决方案 如果你跟随标准就紧紧的跟着标准走(比如别遗漏了forEach 方法的某个参数)
或着跟随主导 Mozilla引领着JavaScript JavaScript语言的创建者Brendan Eich 还在持续开发和其它浏览器相比在Mozilla浏览器中这些新的语言特性最先可用 如果你想给JavaScript添加新的语言特性可以先瞧瞧Mozilla标准例如你想给Array对象扩展一个枚举方法时最好把这个方法取名为forEach而不是each 如果你的确想提供尚不存在的语言特性那么请紧紧跟随着现有的标准走(参考上面的例子)
保持灵活 如果我想修改行为而不改变你的源码这容易不?如果不够容易让它更容易些
管理内存 大家担心内存洩漏你要尽力而为
淘汰浏览器嗅探 貌似浏览器厂商们将永远通过添加新特性来竞争;) 作为库的开发者你要跟得上最新的潮流偶尔浏览一次Ajaxian是不够的你必须奴隶般地阅读每一篇博客文章以找到下一个hack 浏览器嗅探会上瘾的
小巧更佳 各种JavaScript库已经成熟某些库已经应用在主流网站上但并不是所有人都装了MBit的DSL带宽因此请保持库的小巧更好的做法是提供一个打包页面允许按照我的需求有效地构建自己的库
第十条规则 Good ol’ tenth rule(好像是一个口语用法不知道怎么翻译好) 你可以始终依赖第十条规则这就是 保持可预测 我应该可以猜到你的方法是用来干嘛的如果我不知道某个方法的名字也应该能让我猜出来
附加规则
文档恼人但绝对是需要去做的
你用的命名空间越多我就越难记住就如你的电话号码一样
记住可能有数百万人将执行你的代码