回答編集履歴

10

修正

2018/10/25 02:03

投稿

退会済みユーザー
test CHANGED
@@ -2,7 +2,37 @@
2
2
 
3
3
 
4
4
 
5
+ 初期化が目的なのであればdoSomething2です。
6
+
7
+ ちゃんと書くなら次のような感じ。
8
+
9
+ ```javascript
10
+
11
+ class foo {
12
+
13
+ // 割愛
14
+
15
+ Initialize() {
16
+
17
+ this.bar.aaa = 10;
18
+
19
+ this.bar.bbb = 0;
20
+
21
+ }
22
+
23
+ }
24
+
25
+ ```
26
+
27
+
28
+
29
+ #####
30
+
5
- 乳牛を例にして考えてみては?
31
+ 違いについては、例えば乳牛を例にして考えてみては?
32
+
33
+ doSomething1ですがこれは、自分が持つ情報を他に与えるような作りになっています。コンストラクタでは、たまたま自分に情報を与えているだけです。
34
+
35
+ doSomething2ですがこれは、ただの初期化です。
6
36
 
7
37
  ```javascript
8
38
 
@@ -38,11 +68,7 @@
38
68
 
39
69
 
40
70
 
41
- doSomething1ですがこれは、自分が持つ情報を他に与えるような作りになっています。コンストラクタでは、たまたま自分に情報を与えているだけです。
42
-
43
- doSomething2ですがこれは、ただの初期化です。
71
+ #####
44
-
45
-
46
72
 
47
73
  不変性を絡めた質問をしたかったと考えると、
48
74
 

9

修正

2018/10/25 02:02

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,8 @@
1
- 乳牛を例にして考えてみては? fooやdoSomethingでは抽象的過ぎる気がします。
2
-
3
- …とはあまり伝えたいことがわからなかったり…。
1
+ (※修正ばかりでごめんなさい、な考えの沼にはまてしまって)
4
2
 
5
3
 
4
+
5
+ 乳牛を例にして考えてみては?
6
6
 
7
7
  ```javascript
8
8
 
@@ -38,9 +38,15 @@
38
38
 
39
39
 
40
40
 
41
+ doSomething1ですがこれは、自分が持つ情報を他に与えるような作りになっています。コンストラクタでは、たまたま自分に情報を与えているだけです。
42
+
43
+ doSomething2ですがこれは、ただの初期化です。
44
+
45
+
46
+
41
47
  不変性を絡めた質問をしたかったと考えると、
42
48
 
43
- 次に示すdoSomething3, 4みたいなことを例にしたかったとか?
49
+ 次に示すdoSomething3, 4みたいなことを例にしたかったとか?この場合、引数をクローンしておかないと、乳房を共有することになっておかしくなっちゃいます。
44
50
 
45
51
  ```javascript
46
52
 
@@ -66,6 +72,6 @@
66
72
 
67
73
  #####不変性
68
74
 
69
- 渡した引数を変えてはいけないといは、不変性のことかな~と思います。
75
+ 渡した引数を変えてはいけないうんぬんかんぬんは、不変性のことかな~と思います。
70
76
 
71
77
  不変性については、例えば [Immutableの利便性、大きなメリットについて。](https://www.pandanoir.info/entry/2015/10/18/191106) こういった記事が見つかります。[Immutable.js](https://facebook.github.io/immutable-js/)のページを見ると、調査のとっかかりになるかもしれませんね。

8

修正

2018/10/25 01:46

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,6 @@
1
1
  乳牛を例にして考えてみては? fooやdoSomethingでは抽象的過ぎる気がします。
2
+
3
+ …とはいえ、あまり伝えたいことがわからなかったり…。
2
4
 
3
5
 
4
6
 
@@ -36,9 +38,9 @@
36
38
 
37
39
 
38
40
 
39
- ##
41
+ 不変性を絡めた質問をしたかったと考えると、
40
42
 
41
- その、もしかしてdoSomething3, 4みたいなことを例にしたかったのでは
43
+ 次に示すdoSomething3, 4みたいなことを例にしたかったとか
42
44
 
43
45
  ```javascript
44
46
 

7

修正

2018/10/25 01:39

投稿

退会済みユーザー
test CHANGED
@@ -36,6 +36,32 @@
36
36
 
37
37
 
38
38
 
39
+ ##
40
+
41
+ その、もしかしてdoSomething3, 4みたいなことを例にしたかったのでは?
42
+
43
+ ```javascript
44
+
45
+ class 乳牛 {
46
+
47
+ constructor () {
48
+
49
+ // 割愛
50
+
51
+ }
52
+
53
+
54
+
55
+ doSomething3(乳牛Xの乳房) { this.乳房 = 乳牛Xの乳房 },
56
+
57
+ doSomething4(乳牛Xの乳房) { this.乳房 = 乳牛Xの乳房.クローン() }
58
+
59
+ }
60
+
61
+ ```
62
+
63
+
64
+
39
65
  #####不変性
40
66
 
41
67
  渡した引数を変えてはいけないというのは、不変性のことかな~と思います。

6

微修正

2018/10/25 01:37

投稿

退会済みユーザー
test CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  constructor () {
10
10
 
11
- this.初期水分 = 10
11
+ this.初期水分 = 10
12
12
 
13
- this.初期脂肪分 = 0
13
+ this.初期脂肪分 = 0
14
14
 
15
15
  this.乳房 = { 水分: 123, 脂肪分: 456 }
16
16
 
@@ -22,11 +22,11 @@
22
22
 
23
23
 
24
24
 
25
- doSomething1(乳牛Xの乳房) { 乳牛Xの乳房.水分 = this.初期水分 },
25
+ doSomething1(乳牛Xの乳房) { 乳牛Xの乳房.水分 = this.初期水分 },
26
26
 
27
27
  doSomething2() {
28
28
 
29
- this.乳房.脂肪分 = this.初期脂肪分
29
+ this.乳房.脂肪分 = this.初期脂肪分
30
30
 
31
31
  }
32
32
 

5

修正

2018/10/25 01:28

投稿

退会済みユーザー
test CHANGED
@@ -1,42 +1,36 @@
1
- doSomething1は、メソッドの中で自クラスのメンバーの値参照しているわけでないので、メンバーである必要はなさそう。doSomething2が一般気がします。
1
+ 乳牛例にして考えてみて? fooやdoSomethingでは抽象過ぎる気がします。
2
2
 
3
3
 
4
4
 
5
- #####考察1
6
-
7
- また、クラスの外でdoSomething1を呼び出したときのことを考えるとおかしさがわかります。
8
-
9
- (もちろん、どういったクラスかに多少はよるますが。)
10
-
11
5
  ```javascript
12
6
 
13
- let foo = new foo();
7
+ class 乳牛 {
14
8
 
15
- foo.doSomething1(foo.bar); // foo.bar以外が指定されたらおかしくなりそう。見せちゃいけない部分をみせるような作りになってる。
9
+ constructor () {
16
10
 
17
- foo.doSomeghing2();
11
+ this.初期水分量 = 10
18
12
 
13
+ this.初期脂肪分量 = 0
14
+
15
+ this.乳房 = { 水分: 123, 脂肪分: 456 }
16
+
17
+ this.doSomething1(this.乳房)
18
+
19
+ this.doSomething2()
20
+
19
- ```
21
+ }
20
22
 
21
23
 
22
24
 
23
- #####考察2
25
+ doSomething1(乳牛Xの乳房) { 乳牛Xの乳房.水分 = this.初期水分量 },
24
26
 
25
- 例えば、fooが乳牛でbarがその乳房だったとします。
27
+ doSomething2() {
26
28
 
27
- めちゃくちゃ変な感じがします(この例えも変カモ…)。
29
+ this.乳房.脂肪分 = this.初期脂肪分量
28
30
 
29
- ```javascript
31
+ }
30
32
 
31
- let 乳牛A = new 乳牛();
32
-
33
- 乳牛A.doSomething1(乳牛B.乳房); // 乳牛Bの乳房を引数として与えることができてしまう。これはまずい!
34
-
35
-
36
-
37
- // 次のコードが走って、乳牛Aの乳が、乳牛Bの乳房に転移してしまいます。
38
-
39
- doSomething1(arg) { arg.aaa = 10 },
33
+ }
40
34
 
41
35
  ```
42
36
 

4

微修正

2018/10/25 01:27

投稿

退会済みユーザー
test CHANGED
@@ -24,13 +24,19 @@
24
24
 
25
25
  例えば、fooが乳牛でbarがその乳房だったとします。
26
26
 
27
- めちゃくちゃ変な感じがします。
27
+ めちゃくちゃ変な感じがします(この例えも変カモ…)
28
28
 
29
29
  ```javascript
30
30
 
31
31
  let 乳牛A = new 乳牛();
32
32
 
33
- 乳牛A.doSomething1(乳牛A.乳房); // 乳牛Bの乳房を引数として与えることができてしまう。これはまずい!
33
+ 乳牛A.doSomething1(乳牛B.乳房); // 乳牛Bの乳房を引数として与えることができてしまう。これはまずい!
34
+
35
+
36
+
37
+ // 次のコードが走って、乳牛Aの乳が、乳牛Bの乳房に転移してしまいます。
38
+
39
+ doSomething1(arg) { arg.aaa = 10 },
34
40
 
35
41
  ```
36
42
 

3

微修正

2018/10/25 01:09

投稿

退会済みユーザー
test CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- また、クラスの外でdoSomething1を呼び出したときのことを考えるとおかしいですよね。
5
+ #####考察1
6
6
 
7
+ また、クラスの外でdoSomething1を呼び出したときのことを考えるとおかしさがわかります。
8
+
7
- もちろん、どういったクラスかによる部分は多少かもしれせんが。
9
+ もちろん、どういったクラスかに多少はよるまが。
8
10
 
9
11
  ```javascript
10
12
 
@@ -17,6 +19,8 @@
17
19
  ```
18
20
 
19
21
 
22
+
23
+ #####考察2
20
24
 
21
25
  例えば、fooが乳牛でbarがその乳房だったとします。
22
26
 
@@ -32,6 +36,8 @@
32
36
 
33
37
 
34
38
 
39
+ #####不変性
40
+
35
41
  渡した引数を変えてはいけないというのは、不変性のことかな~と思います。
36
42
 
37
43
  不変性については、例えば [Immutableの利便性、大きなメリットについて。](https://www.pandanoir.info/entry/2015/10/18/191106) こういった記事が見つかります。[Immutable.js](https://facebook.github.io/immutable-js/)のページを見ると、調査のとっかかりになるかもしれませんね。

2

追記

2018/10/25 01:04

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,34 @@
1
- doSomething1は、メソッドの中で自クラスのメンバーの値を参照しているわけではないので、メンバーである必要はなさそうですが。doSomething2が一般的な気がします。
1
+ doSomething1は、メソッドの中で自クラスのメンバーの値を参照しているわけではないので、メンバーである必要はなさそう。doSomething2が一般的な気がします。
2
+
3
+
4
+
5
+ また、クラスの外でdoSomething1を呼び出したときのことを考えるとおかしいですよね。
6
+
7
+ もちろん、どういったクラスかによる部分は多少あるかもしれませんが。
8
+
9
+ ```javascript
10
+
11
+ let foo = new foo();
12
+
13
+ foo.doSomething1(foo.bar); // foo.bar以外が指定されたらおかしくなりそう。見せちゃいけない部分をみせるような作りになってる。
14
+
15
+ foo.doSomeghing2();
16
+
17
+ ```
18
+
19
+
20
+
21
+ 例えば、fooが乳牛でbarがその乳房だったとします。
22
+
23
+ めちゃくちゃ変な感じがします。
24
+
25
+ ```javascript
26
+
27
+ let 乳牛A = new 乳牛();
28
+
29
+ 乳牛A.doSomething1(乳牛A.乳房); // 乳牛Bの乳房を引数として与えることができてしまう。これはまずい!
30
+
31
+ ```
2
32
 
3
33
 
4
34
 

1

微修正

2018/10/25 01:02

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,7 @@
1
- doSomething1は、メソッドの中で自クラスのメンバーの値を変更しているわけではないので、メンバーである必要はなさそうですが。doSomething2が一般的な気がします。
1
+ doSomething1は、メソッドの中で自クラスのメンバーの値を参照しているわけではないので、メンバーである必要はなさそうですが。doSomething2が一般的な気がします。
2
2
 
3
3
 
4
4
 
5
5
  渡した引数を変えてはいけないというのは、不変性のことかな~と思います。
6
6
 
7
- 不変性については、例えば [Immutableの利便性、大きなメリットについて。](https://www.pandanoir.info/entry/2015/10/18/191106) こういった記事が見つかります。[Immutable.js](https://facebook.github.io/immutable-js/)のページを見るといろいろ書いてるかもしれませんね。
7
+ 不変性については、例えば [Immutableの利便性、大きなメリットについて。](https://www.pandanoir.info/entry/2015/10/18/191106) こういった記事が見つかります。[Immutable.js](https://facebook.github.io/immutable-js/)のページを見ると、調査のとっかかりになるかもしれませんね。