走进函数式编程 (Becomming Functional) (1)

本人正在阅读 《Becoming Functional》这本书,且对 Scala 的使用经验已有数年,所以品读的同时更是对头脑中函数编程的概念进行重新整理。函数编程并非一定要诸多语言特性的支持,它是一种不同的思维方式;比如说我们公司项目如今还是用的 Java 7,但我们一直以函数式思维来书写我们的代码。我们正在从 Java 7 升级到 Java 8,待到 Java 8 时代码行文肯定要比现在简练的多,但函数式编程思维未变。

下面是函数式编程基本概念

  1. First-class functions: 函数是第一类型
  2. Pure functions:  纯函数,无边界效应,输出依赖于输入,易测试。像数据库的函数而非存储过程
  3. Recursion: 递归,Scala 强调尾递归优化,避免坠入 StackOverflow
  4. Immutable variables: 这在 OO 里也是一种不错的模式,它与 Pure function 也是相辅的。可能是首先映入函数式编程思维的概念,它不关乎并发性能,解决了并发冲突
  5. Nostrict evaluation: 即变量值的赖加载,变量不到用时不初始化。在 Java 只能用方法来模拟实现
  6. Statements: 表达式优于控制结构,语句可以有返回值的,如 val a = if (condition) 1 else 2
  7. Pattern Matching: 模式匹配,不光是通常对数值或字符串的 switch/case, 还能应用到任何对象的匹配,进行类型检查或从对象中提取元素

 

Becoming Functional》逐章对上面七大概念进行讲解.

First-class functions: 函数是第一类型 阅读全文 >>