写点什么

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

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

关注

评论

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

cURL 命令全面解析:提高工作效率

Apifox

程序员 前端 后端 API curl

MES系统跟车间设备怎么连接?设备管理后的好处有哪些?

万界星空科技

数据采集 mes 设备管理 万界星空科技 智能设备管理

实时计算Flink集成开源连接器-TiDB CDC Connector案例实践

TiDB 社区干货传送门

实践案例 应用适配 数据库连接

一文了解TiDB的数据对比工具sync-diff-inspector

TiDB 社区干货传送门

实践案例

绕过 MVCC 影响的 TiDB Delete 数据方法

TiDB 社区干货传送门

管理与运维 7.x 实践

详细教程:如何制作产品介绍二维码(二)

草料二维码

二维码 草料二维码 干货分享

数据本地性如何助力企业在云上实现高效机器学习

Alluxio

机器学习 gpu 模型训练 云存储 Alluxio

通过TiOperator备份数据到共享存储

TiDB 社区干货传送门

实践案例 集群管理 故障排查/诊断 备份 & 恢复

如何使用 NFTScan NFT API 在 Blast 网络上开发 Web3 应用

NFT Research

API NFT\ NFTScan

AI力量:如何让测试更智能更高效

测试人

软件测试

章文嵩等技术大咖共同探讨企业数据治理和降本增效策略运用!

AutoMQ

#云原生 KubeBlocks #Kafka #OceanBase #AutoMQ

在 GraalVM 静态编译下无侵入实现可观测探索

阿里巴巴云原生

Java 阿里云 云原生

【干货】需求驱动的配货

第七在线

Java jdbc 驱动 maxPerformance 配置避坑

TiDB 社区干货传送门

开发语言 应用适配 数据库连接

TiKV 状态变化

TiDB 社区干货传送门

Yummy FTP Pro for mac中文直装版 最可靠的ftp文件传输工具

Rose

Mac软件 文件传输工具 ftp传输 Yummy FTP Pro 破解版 Yummy FTP Pro 下载

教你用python爬取『京东』商品数据,原来这么简单!

技术冰糖葫芦

API 接口

Puppet 2024年度报告:平台工程发掘 DevOps 无限潜质

SEAL安全

DevOps 平台工程 puppet

开源分布式数据库 TiDB 架构以及HTAP 的实现

TiDB 社区干货传送门

TiDB 底层架构

月活超 1.1 亿,用户超 4 亿,你也在用的「知乎」是如何在超大规模 TiDB 集群上玩转多云多活的?

TiDB 社区干货传送门

实践案例 社区活动 数据库前沿趋势 OLTP 场景实践

微隔离,做到真正零信任

德迅云安全杨德俊

金三银四 | 软件测试开发岗求职攻略来袭,快来抢先一步!

测试人

软件测试

容器架构下的性能测试实践方法

老张

性能测试 容器化

DApp 链上合约质押挖矿系统开发丨技术搭建

l8l259l3365

TIDB 分区表使用实践

TiDB 社区干货传送门

6.x 实践

万字心路历程:从十年老架构决定重构开始

阿里巴巴云原生

阿里云 云原生 iLogtail

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