美文网首页
函数式编程

函数式编程

作者: 上海马超23 | 来源:发表于2017-07-23 21:27 被阅读0次

变量的修改结果无法预知源于共享的可变数据,很难追踪是哪个实例修改了变量。
如果一个方法只是把计算结果return,而不修改内部状态,这个方法就是无副作用的。
我们允许函数内部执行一些非函数式带有副作用的操作,只要这些操作的结果不会暴露给系统中的其他部分,调用者不需要知道,或者完全不在意这些副作用,因为这对它完全没有影响。
我们的准则是,被称为“函数式”的函数或方法都只能修改本地变量。除此之外,它引用的对象都应该是不可修改的对象。所有的字段都是final类型,引用类型(即非基本类型)字段都指向不可变对象。
函数或者方法不应该抛出任何异常,不再像预期那样,返回一个恰当的结果值。对于诸如除数是零这种异常情况,使用Optional类型,要么成功返回值,要么返回对象表示其无法进行指定的操作。也可以选择在本地局部使用异常,避免通过接口将结果暴露给其他方法,不会过去膨胀代码。
函数式编程写出来的代码,可以在任何时候作为函数被其他地方复用。

递归和迭代

像while或者for这样的迭代构造器经常隐藏着陷阱,诱使你修改对象。比如while循环中,循环的条件需要更新。尽量使用Stream代替迭代,避免变化带来的影响。

技巧

高阶函数

能够接受至少一个函数作为参数,或者返回的结果是一个函数。

// 返回一个函数
Function<Integer, String> getMyFunction() {
    return (it) -> "Hello, world: " + it;
}

相关文章

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

  • 函数式编程(一)—— 前置知识

    为什么要学函数式编程? 什么是函数式编程?函数式编程和面向对象编程的不同对于函数式编程思维方式的理解: 函数式编程...

  • 二十二、函数式编程、面向协议式编程

    函数式编程(Functional Prigramming) 函数式编程 函数式编程(Functional Prig...

  • Python中的函数式编程

    函数式编程 说到函数式编程,我们的重点在于为什么要采用函数式编程,而不是什么是函数式编程。 函数式编程的优点:一、...

  • RxSwift-初探

    函数响应式编程 一:函数式 函数式编程简称FP(Functional Programming),函数式编程就是一种...

  • 《Kotlin入门实战》CH5 | 函数与函数式编程

    函数与函数式编程 函数式编程与命令式编程最大的不同是:函数式编程的焦点在于数据的映射,命令式编程(imperati...

  • 函数响应式编程思想 & RxSwift 核心逻辑(一)

    函数响应式编程思想 函数响应式编程思想即是将函数式编程和响应式编程相结合。 函数式编程 顾名思义,就是像函数一样的...

  • RxJava系列|RxJava简介(一)

    函数响应式编程 函数式编程是一种编程范式。 常见的编程范式有:命令式编程、函数式编程和逻辑式编程。 面向对象就是一...

  • 了解C# 函数式编程

    什么是函数式编程 函数式编程是一种编程范式,维基百科对函数式编程定义如下: 函数式编程(英语:functional...

网友评论

      本文标题:函数式编程

      本文链接:https://www.haomeiwen.com/subject/gagmkxtx.html