编程范式的思考
2021/8/20 1:05:50
本文主要是介绍编程范式的思考,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
无论是 OOP or FP,都是为了编写出可维护、易于理解的代码。不同的范式,只是不同的设计思路,或者说不同理解的实现。
但有约定的规范,这些规范建立在对这编程范式的深刻理解之上。
OOP
- 多实例,在程序中它可能会被实例化多次或存在多个实例,比如:VNode, Entity, Animal 等
- 多态 & 继承,存在继承 & 重写的关系的时侯,比如:微前端中的 App & SubApp, DOM 中的 Element & HTMLElement & HTMLDivElement 等
设计目标:
- 高内聚,即所有的属性、方法都集合定义在这个对象上
- 低耦合,边界清晰,不混杂任何跟对象无关的属性、方法
设计原则:
-
SRP(Single responsibility principle):单一职责,一个类或者一个模块只做一件事。
-
OCP(Open Closed Principle):开放封闭,对扩展开放,对修改关闭
-
LSP(Liskov Substitution Principle):里氏替换,派生类可以扩展基类的功能,但不能改变基类原有的功能
-
ISP(Interface Segregation Principle):接口隔离,一个接口应该拥有尽可能少的行为
-
DIP(Dependence Inversion Principle):依赖反转,高级模块不应该依赖低级模块,而是依赖抽象接口,通过抽象接口使用对应的低级模块
设计模式 Design Pattern
有许多的设计模式,都很有意思。
FP
- 纯逻辑/纯运算,只是执行程序逻辑/运算并返回结果,比如:sum(a, b), divide(a, b)
- 单一/零碎,无法统一或者归类,比如 utils, helpers, type 等
设计原则:
- 无副作用,不修改 Input 总是返回新的 Output,更易控制/测试,相同 input 永远返回相同的 output
- 单一职责,一个函数只做一件事
题外话:
很多人说 React 是 FP 的拥护者,从某种程度上来说,好像是那么回事,比如像这样:
UI = React(state)
但是 Vue 则更像是个大的 Tools set 工具集合包:
Vue = MVVM(Observer + Watcher + Deps) + VirtualDOM + EventEmitter + Filters + Directives + Component + ...
还是更喜欢 React 的设计,只做自己核心的该做的事。而不是什么都给你做了,那样虽然简单,但总觉得不是在写 JavaScript,而是在写 Vuejs。而写 React 则不会有这种感觉,写 React 会觉得就是在写 JavaScript, 而不是 React。
之前看过别人的观点说 Vuejs 更适合中小型项目,不适合大型项目。经过这几年的实践来看,我是认同的。说得没错。因为 Vuejs 带来了便利 API 的同时也带来了各种副作用,或者过度设计,是一个为了方便开发者而设计的框架。而在大型项目中,过多的 API 反而显得多余,以及不好维护,或者引入了太多种不同的编码风格。
References
https://zh.wikipedia.org/zh-hans/SOLID_(面向对象设计)
https://zhuanlan.zhihu.com/p/320494053
https://zhuanlan.zhihu.com/p/41885040
这篇关于编程范式的思考的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解