培养面向函数式的思维

ThoughtWorks架构师这篇PDF提倡培养自己以面向函数式方式思考,使用面向函数式工具可能太繁琐,有些代价,为什么不让我们的思维更加functional呢?

他也认为:软件世界存在名词和动词两个基本划分(见banq的OOD vs. SOA),如果说OOP使得我们我们注重导致状态变化的行为,使得我们处理状态更容易些;那么FP可以进一步消除状态的影响。

OO使得通过封装变化的部分能让人理解(将变化和不变分离),而FP通过最小化细分可变部分,使得代码更加易懂。

PDF以一个数字计算为案例,原先需要在类中设计一个字段来表示内部状态,但是使用FP重新思考后,就无需内部状态,消灭了状态,这是不同角度考虑问题的魔力。

恩,个人感觉,函数式编程,因脱离状态,可灵活地描述逻辑,但我们必须要知道我们到底在写一个什么东西,而这个东西就是边界。我们干事情肯定有了目的才会行动,不可能漫无目的写逻辑,到头来写什么自己都不知道。

我们可以对内部逻辑用函数式,对外用对象形成组件。其实有人说过因动态函数式语言写出来的组件对外是无法捉摸的,通过文档说明,那么想想,接口不就是一个文档么?定义文档就是定义边界。OO是边界思维,刚好与与现时没有边界的动态函数式互补。

所以个人一直以来,都感觉scala是我想要的东西——通过对象封装函数,优雅,当然这是个人感受而已。

PS:若果按我所想的,就变成考虑何处需要边界了。

关注面向函数式方式思考。。。

pdf呢??

哥呀,pdf下载不了了