【问题标题】:Terminology for methods that mutate or don't mutate state变异或不变异状态的方法的术语
【发布时间】:2015-06-12 07:08:57
【问题描述】:

是否有公认的术语来指代改变或不改变对象状态的方法?

例如描述一种函数类型的成熟术语:“idempotent”。

【问题讨论】:

标签: design-patterns terminology


【解决方案1】:

Pure Function 是一个成熟的术语,指的是仅依赖于其输入参数的操作。它既不访问也不改变任何非本地状态。编程中纯函数的概念来源于mathematical functions。与纯函数相反的是不纯函数,它可能会执行 IO,产生副作用,或者对非本地状态有一定的依赖。

请注意,纯函数的定义比这个问题要求的更严格,因为纯函数不仅禁止对象状态的突变,还禁止访问对象状态。要找到适合纯函数和不纯函数的定义,我们可以考虑Difference between a method and a function。通常,这两个术语被合并为一个无定形的抽象。但是为了这个问题的目的,我们将使用更精确的含义:方法与对象耦合,而函数是独立的。

从这个简单的定义我们自然而然地得出Pure Methods 的概念。纯方法只是一个纯函数,但有一个区别:除了它的输入参数之外,该方法隐式接收对其封闭对象的引用,就好像它有一个额外的参数一样。

我不能说纯方法这个术语和纯函数一样已经很成熟了。但如果我们将纯函数的定义与方法的定义放在一起,那么我认为纯方法的定义很直观。所以回答这个问题,pure是常用来表示有无突变的关键词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 2017-08-11
    • 2019-04-30
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多