写点什么

面向 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:246008
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

东莞理工网安学院“火焰杯”软件测试高校就业选拔赛颁奖典礼

测试人

软件测试

昇腾CANN 7.0 黑科技:大模型训练性能优化之道

华为云开发者联盟

人工智能 华为云 大模型 昇腾CANN 华为云开发者联盟

人工智能对教育和职业的双重冲击

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

测试

文韬武略,创新无界,华为云1024程序员节精彩抢先看

华为云开发者联盟

程序员 开发者 华为云 华为云开发者联盟 华为云1024程序员节

应对全球性挑战的AI解决方案

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

测试

加速深度学习创新的引擎

百度开发者中心

大模型 LLM LLMOps

大模型的幻觉 (Hallucination) 因何而来?如何解决幻觉问题?

Baihai IDP

人工智能 AI 大模型 白海科技 大模型幻觉

AI在创新和竞争力中的关键

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

测试

天下苦定制久矣,平台化建设到底难在哪里?

权说安全

零信任 统一门户

用HarmonyOS做一个可以手势控制的电子相册应用(ArkTS)

HarmonyOS开发者

HarmonyOS

培养AI领域的未来人才

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

测试

HarmonyOS音频开发指导:使用AudioRenderer开发音频播放功能

HarmonyOS开发者

HarmonyOS

初探亚马逊 AI 编程助手 CodeWhisperer

亚马逊云科技 (Amazon Web Services)

人工智能’ 云上探索实验室 Amazon CodeWhisperer

10.26 来 CNCC 2023 T16 展位,TDengine 精美周边等你来领!

TDengine

时序数据库 ​TDengine

AI监管与政策:塑造人工智能未来

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

测试

AI与就业:面对未来的失业风险

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

测试

人工智能改变日常生活和工作的未来

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

测试

人工智能的潜在益处与风险

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

测试

LLM盛行下,如何高效训练大模型

百度开发者中心

大模型训练 LLM LLMOps

全网最详细4W字Flink全面解析与实践(上)

Java随想录

Java 大数据 flink

我和极客时间的故事

查拉图斯特拉说

我和极客时间的故事

优测云测试平台 | 有效的单元测试

优测云服务平台

测试 单元测试 云平台 测试开发

AI见证每一跳的闪耀!百度成为中国国家跳水队人工智能合作伙伴

飞桨PaddlePaddle

人工智能 百度

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