我的一次项目改进,使用函数式编程和合成函数代替OOP

103 阅读1分钟

最近在改写一个嵌入式端的应用程序,使用的是nodejs,哈哈,没错,我就是用JS写万物。

原来的开发模式基本上都是按照OOP思路去写的代码,还好ES6引入了class语法糖,写起来其实也是蛮顺利的。只是后来用vue3写了一段时间的前端,对合成式函数用上了瘾,切换到OOP模式的时候有点不习惯了,因此打算将合成函数代入到服务器开发模式中,看看能不能实现。

既然选择了合成函数,那么也就没什么必要用OOP了,索性直接全部用函数式编程算了。

那么接下来遇到的第一个问题就是如何实现代码的复用。OOP中通过继承或者混入的方法就是实现代码的复用,那么函数式编程怎么实现复用呢?要是不能不用,每个模块写一遍那不是傻了么?

其实函数式编程在js中实现复用很简单,使用高阶函数就可以轻松实现了。但是只用高阶函数只能实现复用,却无法修改或者添加新的特性。

这时候就要使用合成函数了!窝设计的方法是,函数返回一个合成对象,对象中实现类似OOP实例方法的方法。因为js可以很简单的对对象进行增加修改和删除,所以通过修改高阶函数返回的对象,就能实现OOP中的继承和拓展到操作。

未完待续。。。