Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

基于 javascript 的设计模式总结 #27

Open
shaozj opened this issue Aug 24, 2019 · 0 comments
Open

基于 javascript 的设计模式总结 #27

shaozj opened this issue Aug 24, 2019 · 0 comments
Assignees

Comments

@shaozj
Copy link
Owner

shaozj commented Aug 24, 2019

代码设计原则

设计原则是提高代码可维护性,帮助建立灵活、稳定的系统的基石。主要包括通用设计原则S.O.L.I.D原则

通用设计原则是要求我们在任何开发中都要坚持和遵守的基础原则。
S.O.L.I.D原则更适用于支持面向对象的高级语言,有些原则可能不适用于目前的前端开发,但是了解它的思想对我们也是有益的。

通用设计原则 (Common Design Principles)

Keep It Simple and Stupid (KISS)

  • 代码要易读易维护。

  • 不要过度设计一个方案,满足需求的最简洁的方案即是最好的方案。

Don't Repeat Yourself (DRY)

不要重复,重复的逻辑应该抽离以便复用,重复的操作应该工具化工程化。

Tell, Don't Ask

也叫“好莱坞原则”,这个原则是关于封装和职责分配的。当跟别的模块交互时,应该是直接告诉那个模块你想要的操作而不是通过判断那个模块的状态,再调用操作。

You Ain't Gonna Need It (YAGNI)

只包含应用需要的功能,不要加一些自以为需要的功能。
TDD是一种遵守YAGNI的开发模式。

Separation of Concerns (SoC)

将功能分离成独立的功能模块,这些模块有自己独立的行为和数据,以增进代码重用性、可维护性和可测试性。

S.O.L.I.D设计原则

单一职责原则 (Single Responsibility Principle - SRP)

这条跟SoC相近,它规定每个对象应该只关注一个功能点、只有一个理由改变,避免瑞士军刀式的对象。

开放封闭原则 (Open-Closed Principle - OCP)

对扩展开放,对修改封闭。
对扩展开放,意味着有新的需求或者变化时,可以对现有的代码进行扩展,以适应新的情况。对修改封闭,意味着一旦设计完成,就可以独立完成其工作,添加需求也不用修改其内部实现。

里氏替换原则 (Liskov Substitution Principle - LSP)

任何子类都可以不需要任何修改替代父类来使用。

接口分离原则 (Interface Segregation Principle - ISP)

将相似的接口方法分组抽离形成新的接口,避免去实现一个巨大的接口。

依赖倒置原则 (Dependecy Inversion Principle - DIP)

程序要依赖于抽象接口,不要依赖于具体实现,简单讲就是面向接口、面向抽象编程。

todo:

  • 单例模式
  • 工厂模式
  • 发布订阅
  • 双向绑定
  • 观察者模式
  • 单例模式
  • 中介者模式
  • 高阶组件
  • render props
  • hooks

reference:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant