2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

专业认证总结 职业等级 电工高级

万里无云万里天

自动化 工厂运维

AI编程实战|提示词工程-N-Shot学习与实践

Jxin

编程 AI 提示词 AI辅助编程

微软漏洞赏金计划丰收季:六大安全研究员获嘉奖

qife122

漏洞赏金 IE11漏洞

Windows Sandbox 内核研究:实现 Bootkit 绕过 PatchGuard 与 DSE

qife122

Windows内核 UEFI

自然语言处理现状与未来展望

qife122

自然语言处理 文本摘要

自控经验 设备的一生

万里无云万里天

自动化 工厂运维

专业认证总结 低压电工

万里无云万里天

自动化 工厂运维

自控经验 多看顶尖工程师的作品,优化自己的思维模式

万里无云万里天

自动化 工厂运维

专业认证总结 职称 自动控制助理工程师

万里无云万里天

自动化 工厂运维

配电 低压电工经验总结(1)

万里无云万里天

工业 工厂运维

使用Rust操作Windows ACL:windows-acl库简介

qife122

rust acl

数据库查询通信开销降低97%的新方法

qife122

数据库管理 VLDB

量化合约现货交易系统开发源码架构介绍

l8l259l3365

京东商品详情API秘籍!轻松获取商品详情数据

tbapi

京东API 京东商品详情API 京东数据采集 京东数据解析

警惕供应链风险:Cybercheck指南助力网络安全防护

qife122

风险评估 供应链安全

专业认证总结 职业等级 电工中级

万里无云万里天

自动化 工厂运维

配电 低压电工经验总结(6)

万里无云万里天

工业 工厂运维

Mac下Elasticsearch7.x安装及Springboot集成

程序员架构进阶

elasticsearch #架构 8月月更 检索引擎 RAG 框架

Node.js流基础:高效处理I/O操作的核心技术

qife122

node.js I/O操作

自动化推理技术入门指南

qife122

自动化推理 程序分析

配电 低压电工经验总结(3)

万里无云万里天

工业 工厂运维

配电 低压电工经验总结(5)

万里无云万里天

工业 工厂运维

合规部署大语言模型:AI编排与可解释性

qife122

金融服务 合规

生成对抗网络(GAN)在音乐创作中的实践应用

qife122

生成对抗网络 AI音乐生成

微软Office代码执行漏洞分析(CVE-2021-38646):深入Borland数据库引擎的漏洞挖掘

qife122

漏洞挖掘 模糊测试

专业认证总结 软考 网络管理员

万里无云万里天

自动化 工厂运维

视频分割技术:方法、挑战与应用

qife122

深度学习 计算机视觉

配电 低压电工经验总结(4)

万里无云万里天

工业 工厂运维

配电 低压电工经验总结(7)

万里无云万里天

工业 工厂运维

京东SPU/SKU数据接口全解读:商品详情API文档

tbapi

京东商品详情接口 京东API 京东数据采集 京东数据分析

专业认证总结 职业等级 电气设备安装工中级

万里无云万里天

自动化 工厂运维

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