是否存在改变全球状态的方法的标准技术术语?
println("I don't consider stdout to be part of the global state")
和date()
不会修改全局状态。更新:通过全局状态,我指的是其他方法或同一方法的其他调用可见的内存。
由于程序的任何方法都无法读取stdout,println("I don't consider stdout to be part of the global state")
会产生打印的副作用,但不会改变全局状态。
答案 0 :(得分:2)
我想说这种方法有“副作用”。我第一次遇到这个术语的时候,我是以单向的方式教授函数编程,但我发现它在普通编程中常用于表示状态变化。
(来自网络搜索的引用:wikipedia,discussion 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年专业编程经验的人,我可以说没有一个词会被广泛认可。最常见的表示法是该方法具有“副作用”。