在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

技术解读华为云CCE Autopilot,k8s集群托管免运维

华为云开发者联盟

Kubernetes 云原生 华为云 华为云开发者联盟 企业号2024年6月PK榜

TDengine Open Day 成功举办:洞察技术革新与职场策略!

TDengine

数据库 tdengine 时序数据库

想做物联网卡系统 是因为不想忍

开源物联卡管理平台-设备管理

物联网 IoT eSIM安全 java 技术提升

很有意思的两个测试面试题

老张

为什么要使用 YAML 文件?

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

测试

极限网关助力好未来 Elasticsearch 容器化升级

极限实验室

elasticsearch 网关 极限网关 极限科技

软件测试学习笔记丨Linux系统与shell环境准备

测试人

软件测试

这么简单的问题都不会,那还面试什么!?

王中阳Go

Go 面试 面试题 面经 Go进阶

深入解析单元测试框架如何构建可靠代码的基石

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

测试

京东JD商品详情API返回值研究:商品数据与电商用户体验优化

技术冰糖葫芦

API Explorer API 接口 API 策略

PPT下载 | 构建数据价值高速路--DataOps的应用实践与前沿探索

数造万象

数据治理 数据开发 科技 DataOps

业界领先的多核异构框架RTONBOOT介绍

winfredy

无人机 机器人 工业自动化 3D打印 精密运动控制

淘宝搜索API返回值分析:关键字搜索在电商领域的应用价值

技术冰糖葫芦

API Explorer API 接口 API 策略 pinduoduo API

简单的限流过滤器

不在线第一只蜗牛

什么是自动化测试框架?

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

测试

湖仓一体全面开启实时化时代

Apache Flink

大数据 flink paimon streaming lakehouse

和鲸101领航:ModelWhale助航遥中心改革AI科研范式

ModelWhale

人工智能 大数据 遥感应用

鸿蒙系统中的像素单位与API使用详解

彭康佳

android 鸿蒙 分辨率

会议通知|大模型基础设施高质量发展专题研讨会

中国信通院AI Infra工作组

大模型建设赋能再升级 大模型基础设施高质量发展研讨会圆满成功

中国信通院AI Infra工作组

如何快速开发一个鸿蒙原生app

FinFish

HarmonyOS 小程序技术 小程序容器技术 鸿蒙app 鸿蒙原生应用开发

软件测试学习笔记丨Bash编程语法

测试人

软件测试

和鲸101领航:跨学科实训赋能人大数据人才培养,共推新文科建设

ModelWhale

大数据 中国人民大学 新文科

中国信通院启动科学智能(AI4S)产业图谱编制工作

中国信通院AI Infra工作组

和鲸101领航:同济MBA与和鲸共建数智人才培养计划

ModelWhale

大数据 数字化 同济大学MBA

深度解析:国有企业数字化转型的背景、现状与思路

优秀

数字化转型 央国企数字化转型 国企数字化转型

零售企业的“智慧大脑”:配补调系统为何不可或缺?

第七在线

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