0

对改变全局状态的方法有标准的技术术语吗?


  • unpure ”过于严格,因为 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

4 回答 4

2

我不认为对于改变全局状态的方法存在一种与语言无关的技术术语。正如您已经指出的那样,mutator 即将结束,但它确实是 setter 的同义词。

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

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

于 2013-06-07T20:24:01.610 回答
2

我会说这种方法有“副作用”。我第一次遇到这个词是在我在大学学习函数式编程时,但我发现它在普通编程中常用来表示状态变化。

(来自网络搜索的参考:维基百科关于程序员堆栈交换的讨论。)

于 2013-06-07T18:39:30.587 回答
1

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

“更新、修改器或修改器方法是改变对象状态的访问器方法。”

于 2013-06-05T18:59:45.890 回答
0

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

于 2013-06-09T01:22:08.467 回答