0

グローバル状態を変更するメソッドの標準的な技術用語はありますか?


  • Unpure」 は厳しすぎます。なぜなら、 unpure メソッドprintln("I don't consider stdout to be part of the global state")およびdate()はグローバルな状態を変更しないからです。
  • Mutator メソッド」は近いですが、「セッター」の同義語であることが多いため、1 つの変数のみを変更したり、ローカル変数のみを変更してグローバルな状態を変更したりしない場合があります。
  • " const メソッド" は C++ のみに使用されているようで、厳密すぎる技術的な詳細を暗示しています (たとえば、メソッドは非 const メソッドを呼び出さない可能性があります)。
  • 変異法」は私には良さそうに聞こえますが、目的 c でのみ使用される用語のようです。

更新: global stateとは、他のメソッドまたは同じメソッドの他の呼び出しから見えるメモリを意味します。

stdout はプログラムのどのメソッドでも読み取ることができないためprintln("I don't consider stdout to be part of the global state")、印刷の副作用がありますが、グローバル状態は変更されません。

4

4 に答える 4

2

グローバルな状態を変更するメソッドに対して、言語にとらわれない専門用語は 1 つもないと思います。あなたがすでに指摘したように、ミューテーターは終わりを迎えますが、実際にはセッターと同義です。

また、グローバルな状態の概念は非常に広く、物議を醸しています。グローバルな状態をどのように考えていますか?

名前を定式化する場合、潜在的な適合として「変異原性」という用語をお勧めします. その意味は、「突然変異を誘発することができる」( 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

この方法には「副作用」があると思います。大学で関数型プログラミングを教えられたときに初めてこの用語に出くわしましたが、通常のプログラミングでは状態変化を意味するために一般的に使用されていることがわかりました。

(Web 検索からの参照:ウィキペディアプログラマーのスタック交換に関する議論。)

于 2013-06-07T18:39:30.587 に答える
1

「修飾子法」?ここで使用されていることを除いて、決定的な公式ソースは見つかりませんでした https://en.wikipedia.org/wiki/Method_(computer_science)#Accessor_and_mutator_methods

「 update、modifier、または mutator メソッドは、オブジェクトの状態を変更するアクセサー メソッドです。」

于 2013-06-05T18:59:45.890 に答える