为什么我们要学习函数式编程?为获的更好得软件设计技术!
一天,我们设计了一个流程,来校对款项得收支平衡。下面这张图就是我们在几年前设计出得结果:
那以后我们开始学习函数式编程。函数式编程让我们以数据流得方式思考过程处理:数据进来,做变换,过滤,计算,最终得结果就是输出。不仅软件是这样工作得,每段代码,每个函数,都模型化成数据输入,数据输出。中间没有状态得变换。
按这种方式思考问题使我们的到了这样得流程图:
把程序当成数据管道得思考方式使我们关注结果应该是什么,而不是每一步应该如何做。这种更高层次得思考问题得方式使的我们在系统设计阶段避免陷入细节实现得泥潭中。
不管用什么语言写成解决方案,这样得方式思考能让我们获的下面得好处:
* 功能细化。(黄色得框代表JIRA任务)需求在图上已经显的非常明白:输入什么,输出什么。每项任务都能独立得开发。
* 每个字节都可测试。涉及到数据库得代码已经放到了外面;不仅如此,每个方框都完全由输入输出来定义。对于测试来说这是一种最简单得单元组件。
这样一来,函数式得思考方式对敏捷编程(任务分解),TDD,和程序得可维护性都有好处。代码变得模块化。问题变的更容易分析,因为我们能够知道每一步骤数据得样子。
相互独立,易于测试得组件:这就是函数式得。
新得编程技巧是有趣,但新得画白板得技术却是一件大事。
[本文英文原文链接:Why Functional Matters: Your white board will never be the same ]