質問編集履歴
1
冪等性の部分を削除しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
```
|
33
33
|
### 質問詳細
|
34
34
|
この場合`this._value`の値が変わるとcalcFuncメソッドの結果が変わってしまいます。
|
35
|
-
これは副作用を起こすメソッドということだと思うのですが、様々なサイトでは「関数の外で定義された変数によって結果が異なるので参照透過性がない
|
35
|
+
これは副作用を起こすメソッドということだと思うのですが、様々なサイトでは「関数の外で定義された変数によって結果が異なるので参照透過性がない」と書かれています。
|
36
36
|
```js
|
37
37
|
const test = new TestClass();
|
38
38
|
test.updateValue(2);
|
@@ -42,8 +42,8 @@
|
|
42
42
|
test.calcFunc(3); // 9
|
43
43
|
```
|
44
44
|
この例のコードが簡単すぎてあまり良くない例かもしれません。
|
45
|
-
ですが、プライベート変数に値を保持しておいて、メソッドの戻り値がプライベート変数によって変わるのは
|
45
|
+
ですが、プライベート変数に値を保持しておいて、メソッドの戻り値がプライベート変数によって変わるのは副作用を起こすのでこれはダメなコーディングでしょうか?
|
46
|
-
副作用、
|
46
|
+
副作用、参照透過性を解説しているサイトはどれも関数について書かれていて、クラスのメソッドについてではない気がしています。
|
47
47
|
もしメソッドが副作用を起こさないようにするにはプライベート変数を使うべきではないのでは?とも思ってしまいますがプライベート変数を使わないことができません。
|
48
48
|
|
49
49
|
どのようにしたらメソッドに副作用を起こさないように書けるのでしょうか?
|