是否有完善的术语来引用那些有或没有改变对象状态的方法?
例如描述一种功能类型的完善术语:“idempotent”。
答案 0 :(得分:1)
Pure Function是一个完善的术语,指的是一个仅依赖于输入参数的操作。它既不访问也不改变任何非本地状态。编程中纯函数的概念源自mathematical functions。与纯函数相反的是不纯函数,它可能执行IO,产生副作用,或者对非本地状态有一些依赖。
请注意,纯函数的定义比此问题要求的更严格,因为纯函数不仅禁止对象状态的变异,还禁止访问对象状态。为了找到适合纯函数和不纯函数的定义,我们可以考虑Difference between a method and a function。通常,这两个术语被混合成一个无定形的抽象;但是出于这个问题的目的,我们将使用更精确的含义:一个方法与一个对象耦合,而一个函数是独立的。
从这个简单的定义,我们自然会达到Pure Methods的概念。纯方法只是一个纯函数,只有一个区别:除了输入参数之外,该方法还隐式接收对其封闭对象的引用,就像它有一个额外的参数一样。
我不能说纯方法这个术语与纯函数的建立方式相同;但是如果我们采用纯函数的定义,以及方法的定义,那么我认为纯方法的定义遵循直观。所以要回答这个问题, pure 是常用来表示是否存在突变的关键词。