BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

面向JavaScript的SOLID设计原则

| 作者 Jan Stenberg 关注 34 他的粉丝 ,译者 臧秀涛 关注 4 他的粉丝 发布于 2014年1月25日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Derick Bailey是一位专注于JavaScript的作者和开发者,他最近在CodeMash上发表的演讲中指出:很多开发者都使用过面向对象语言,也有很多开发者使用过JavaScript,但很少有人把面向对象原则和JavaScript放在一起使用过。在面向对象编程中,我们会把这些基础和原则看做工作的根基,但是从基于类的静态语言转向基于松散的类型而非类的语言时,往往发现同样的原则很难应用。

Derick宣称,为帮助开发者编写良好且稳定的JavaScript代码,有很多很好的原则、实践和模式可供使用,一个例子就是Robert C. Martin于本世纪初总结出的SOLID原则

Derick把SOLID原则描述为可以很好地配合的五个独立模式,他还使用代码示例依次介绍了所有这些模式,同时看了一些JavaScript特有的风格,这些风格使得在JavaScript中应用SOLID原则与在像Java和C#这样的语言中应用有点不同。

Derick对这五种原则的定义是:

  • 单一职责原则。当需要做出修改时,原因只能有一个。这有助于帮助开发者理解所构建事物的上下文和职责,并理解何时需要修改。
  • 开放-封闭原则。行为的改变应该可以在不改变现有代码的条件下进行,例如,使用扩展点和创建可以插入的代码。
  • 里氏替换原则。派生的对象或类型必需能够替换其基类。在Derick看来,这是开放-封闭原则的一个更为专注的版本。
  • 接口隔离原则。不应该强迫客户依赖没有使用的接口。有个问题是,JS中没有显式的接口,不过我们有些方法绕过。
  • 依赖倒转原则。考虑两个概念,抽象(Abstraction)和所有权(Ownership)。前者指的是我们应该依赖抽象,而不是依赖具体实现;后者指的是低层实现应该依赖高层概念(译者注:关于Ownership,Derick在演讲中提到了“细节依赖策略,而策略不依赖细节”)。

在演讲最后,Derick指出:如果系统中有规模庞大、整整一片的代码块,SOLID可以帮你把它们拆成单个的部分。尽管不会降低复杂性,但是会帮你创建抽象,并将细节组织为我们可以理解的更大的概念。

译者注:演讲相关的Slides和JavaScript代码下载

查看英文原文:SOLID Design Principles for JavaScript

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT