变异全球状态的方法的技术术语?

时间:2013-05-23 16:22:09

标签: methods language-agnostic design-by-contract purely-functional

是否存在改变全球状态的方法的标准技术术语?


  • Unpure ”过于严格,因为不正确的方法println("I don't consider stdout to be part of the global state")date()不会修改全局状态。
  • Mutator method ”接近,但通常是“setter”的同义词,因此可能只更改一个变量,或者只更改局部变量而不更改全局状态。
  • Const方法”似乎仅用于C ++,并暗示了一些过于严格的技术细节(例如,该方法可能不会调用任何非const方法)。
  • 变异方法”对我来说听起来不错,但似乎只是在目标c中使用的术语。

更新:通过全局状态,我指的是其他方法或同一方法的其他调用可见的内存。

由于程序的任何方法都无法读取stdout,println("I don't consider stdout to be part of the global state")会产生打印的副作用,但不会改变全局状态。

4 个答案:

答案 0 :(得分:2)

我想说这种方法有“副作用”。我第一次遇到这个术语的时候,我是以单向的方式教授函数编程,但我发现它在普通编程中常用于表示状态变化。

(来自网络搜索的引用:wikipediadiscussion on programmers' stack exchange。)

答案 1 :(得分:2)

我不认为对于改变全球状态的方法存在一个与语言无关的技术术语。正如你已经指出的那样,mutator会关闭,但它确实是setter的同义词。

全球国家的概念也是一个非常广泛和有争议的概念。你认为全球状态是什么?

如果我们要制定一个名字,我可能会推荐“诱变”这个词作为潜在的适合。它的意思是“能够诱导突变”(http://www.thefreedictionary.com/mutagenic),这与这些方法的能力接近。现在,您可以改变局部变量,对象或“全局”状态的状态。这就是混乱真正存在的地方。在早期的BASIC和COBOL中,每种方法都会修改全局状态。在C中,任何方法都可以修改全局状态。 Java没有明确的全局变量(http://en.wikipedia.org/wiki/Global_variable#Java:_no_explicit_globals

答案 2 :(得分:1)

“修改方法”?除了在这里使用之外,没有找到确定的官方来源 https://en.wikipedia.org/wiki/Method_(computer_science)#Accessor_and_mutator_methods

“update,modifier或mutator方法是一种改变对象状态的访问器方法。”

答案 3 :(得分:0)

有技术术语Referentially Opaque,但它并不经常用于商业编程环境,它更像是一个学术术语。你可以称之为“破坏性的”,更多的人会理解,但如果只是改变状态,它仍然有点令人困惑。你可以称之为“全局变异者”或“非幂等者”。作为拥有超过10年专业编程经验的人,我可以说没有一个词会被广泛认可。最常见的表示法是该方法具有“副作用”。

相关问题