2. 应用函数式编程原则

应用函数式编程原则


        函数式编程近期重新得到了主流编程社区的青睐。部分原因是函数式范例的新生特质很适用于应对产业转向多核过程中的挑战;那是一项重要的应用,但不是这篇短文鼓励你了解函数式编程的原因。 

        掌握函数式编程范例,可以大大改进用其它文法编写的代码的质量。如果深入理解和应用函数式范例,你的设计可以在应用透明上展现出更高的裆次。 

        引用透明是非常理想的特性:它意味着给函数同样的输入,会得到同样的结果,与何地、何时调用无关。即函数计算较少地、理想情况下完全不依赖可变状态的附带影响。 

        命令式语言存在不足之处一个的主要原因是可变的变量。这里的每位读者可能都研究过为什么某些情况下的有些数值不符合预期。可见性语法可以帮助减轻这些潜伏的缺陷,至少可以大大限制他们出现的范围。但真正的成因可能实际上是由于设计上过度使用了可变性。 

        当然关于这点我们从产业中得不到多少帮助。面向对象的引入,会心照不宣地发展出这样的设计,因为经常展示相对长寿的对象的组合图,它们彼此欢乐地调用对方的赋值函数,这可能是危险的。然而,有了精明的测试驱动开发,特别是确用了“Mock Roles, not Objects”,不必要的可变性可以从设计中排除掉。 

        最终会得到一个典型地有更好的职责分配的设计,有着更多、更小的函数,仅依照传给他们参数运行、不涉及可变的成员变量。这样缺陷更少,而且调试起来更加简单,因为很容易在这样的设计中定位是哪里引入了一个错误的数值,而不用去推导某个特定的上下文导致了这个错误的赋值。这达到高档次的引用透明,在学习函数式编程时,肯定没有什么比这些想法更能深入人心,这个计算模型是就是标准。 

        当然,并不是在所有情况下,这种方法都是最佳的。例如,在面向对象的系统中,这种设计结合领域模型开发(其中协同服务以降低商业规则的复杂性)会比用户接口开发产出更好的结果。 

        掌握函数式编程范例,就可以将这些知识恰当地应用到其它领域。你的对象系统(对一个来说)会与引用透明的优点产生共鸣,而且会比你原先所相信的更加接近它的函数式副本。实际上,有些人宣称,函数式编程与面向对象,二者终究仅仅是彼此的倒影,是计算机中的阴和阳。 

原文:Apply Functional Programming Principles byEdward Garson

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值