idan lin
写好代码

为什么我一直强调函数式编程

写代码最重要的事,就两件:

第一,实现功能。基本功能跑起来,完成 showcase,基本就算能跑起来了;然后没有 bug——没有预期外的影响,测试阶段把 bug 消除掉。

第二,让别人看懂。因为功能需要更新迭代。

函数式编程可以帮我们减少一些 bug,提高代码的可读性。

纯粹的,不变的,确定的

我们遇到的 bug:不确定的,变化的,不好复现的。

函数式编程的世界:纯粹的,不变的,确定的。

所以它带来两样东西:更少 bug,更易读(用户视角)。

函数式编程最牛逼的地方,在于它的简单核心思想:无副作用。这是 OOP 领域各种经典架构原则追求的目标,殊途同归。

连 IO Monad 的核心也是这个思路:一直保持延迟执行,等待一个外界的 world 推进它执行。

三种范式的区别,用分配任务打比方

面向对象是分配任务:我要完成一件事,需要分配任务给对象 A、对象 B,对象 A 做一些事情,对象 B 做一些事情,同时他们也会往下分配。这样的问题是什么呢——我很轻松,但是结果不可预测,不知道对象 A、B 在做事情的过程中会不会出差错。

面向过程的执行思路:我亲自指导 A 和 B 应该怎么做事情。这个方式的问题就是出错概率小,但是我很累,需要一直盯着事情。

函数式编程的执行思路:我跟对象 A、B 开了个会,定了个执行计划——我最终要达到这个结果,你们需要什么我帮助(参数),我们把这个协议定好。

这个比喻应该就能直观地看出,应该在什么时候用什么样的指导思想去编写代码了。以及为什么我会一直强调函数式编程:因为它本身携带了更多的信息,与明确的目的。

老板喜欢的编程范式,决定了他的管理方式

面向对象:老板交给你的事情,承诺必达,靠谱。

函数式:让老板看到你做事情的条理。

命令式:给你一堆明确指令,要你按部就班执行。

当代码的规模变大的时候,注定需要完成范式的转变:命令式 → 函数式 → 面向对象。

函数式编程的世界:
纯粹的,不变的,确定的。
← 返回文章列表