写点什么

面向 JavaScript 的 SOLID 设计原则

  • 2014-01-24
  • 本文字数:849 字

    阅读完需:约 3 分钟

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

2014-01-24 08:245704
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 134.2 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

“新程序员”必须学会的8个GPT提问技术

思码逸研发效能

云电脑Win7系统安装报错详解:问题与解决方案

天翼云开发者社区

云计算 云电脑 系统安装

云上业务一键性能调优,应用程序性能诊断工具 Btune 上线

百度Geek说

小程序 百度智能云

《人工智能在测试开发中的应用》

测吧(北京)科技有限公司

测试

聚道云软件连接器助力生产制作行业实现数字化升级

聚道云软件连接器

技术分享 | 神级程序员都在用什么工具?

互联网工科生

IntelliJ IDEA 数据源 JNPF

面向未来的全面预算管理,财务团队应具备的技能

智达方通

全面预算管理 财务团队

云服务器怎么搭建:从零到运行的基础指南

天翼云开发者社区

云计算 云服务器

Java集合篇之set,面试官:请说一说HashSet、LinkedHashSet、TreeSet的区别?

EquatorCoco

Java List 集合 set

人工智能与测试开发:新时代的黄金组合

测试人

人工智能 软件测试 自动化测试 测试开发

展开说说鸿蒙开源与技术细节

Geek_2305a8

当平台工程遇上DevEx:打造卓越的开发者体验

京东科技开发者

技术专栏丨Rust 语言简介及其在 Fabarta 技术栈中的应用

Fabarta

思码逸企业版 4.0 特性之三:研发效能数据的智能化分析与解读

思码逸研发效能

利用故事推动企业变革:如何提升数据分析技能

智达方通

数据分析 数据可视化 全面预算管理 数据故事

后端:手把手带你精简代码-京东零售实践

京东零售技术

Java 后端 代码精简

数字先锋| 乘云而上!天翼云助力东吴人寿开启云端办公新体验

天翼云开发者社区

云计算

揭秘智能商品计划管理系统:为何服装企业老板争相引入?

第七在线

如何提高企业独立站的转化率

九凌网络

一文总结 C++ 常量表达式、constexpr 和 const

不在线第一只蜗牛

c++ 开发语言 tldr

重磅发布!12位效能专家联合打造的《研发效能100问》为你解答疑惑| 附下载

思码逸研发效能

春节后,必读的12篇大模型论文

学术头条

人工智能 大模型 AIGC AI Agent

面向JavaScript的SOLID设计原则_JavaScript_Jan Stenberg_InfoQ精选文章