回答編集履歴
4
追記
test
CHANGED
@@ -98,6 +98,10 @@
|
|
98
98
|
|
99
99
|
|
100
100
|
|
101
|
+
この場合は`Player`のコンストラクタを作成し、`IBullet`型のインスタンスを引数に含め、`Bullet`プロパティを初期化することで`LeadBullet`に依存しなくなります。
|
102
|
+
|
103
|
+
|
104
|
+
|
101
105
|
### 適応例
|
102
106
|
|
103
107
|
|
3
コード修正
test
CHANGED
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
{
|
86
86
|
|
87
|
-
target.GetShotBy(
|
87
|
+
target.GetShotBy(Bullet);
|
88
88
|
|
89
89
|
}
|
90
90
|
|
@@ -158,7 +158,7 @@
|
|
158
158
|
|
159
159
|
{
|
160
160
|
|
161
|
-
target.GetShotBy(
|
161
|
+
target.GetShotBy(Bullet);
|
162
162
|
|
163
163
|
}
|
164
164
|
|
2
文章の修正
test
CHANGED
@@ -6,11 +6,13 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
そもそも、インターフェースを使ったり、依存性逆転の法則、依存性の注入をしたりすることの目的は整理できているでしょうか。
|
9
|
+
そもそも、インターフェースを使ったり、依存性逆転の法則、依存性の注入をしたりすることの目的は整理できているでしょうか。1つは、機能追加・修正をしやすいコードを書くためです。
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
-
|
13
|
+
### 命名を見直す
|
14
|
+
|
15
|
+
|
14
16
|
|
15
17
|
機能追加・修正をしやすいコードを書くためには、まずはクラスやプロパティ・メソッドに適切な名前をつけることです。
|
16
18
|
|
@@ -52,6 +54,10 @@
|
|
52
54
|
|
53
55
|
|
54
56
|
|
57
|
+
### 依存性の注入
|
58
|
+
|
59
|
+
|
60
|
+
|
55
61
|
依存性の注入を使うメリットは外部で作成したインスタンスを取得し、利用できることです。
|
56
62
|
|
57
63
|
`Player`クラスが`IBullet`型のプロパティを持つことにより、特定の`Bullet`クラスに依存しないコードを書けます。
|
@@ -92,6 +98,10 @@
|
|
92
98
|
|
93
99
|
|
94
100
|
|
101
|
+
### 適応例
|
102
|
+
|
103
|
+
|
104
|
+
|
95
105
|
下記は`IHIT`を削除し、インタフェースに定義するものを整理し、依存性の注入を使ったコードです。
|
96
106
|
|
97
107
|
|
1
文章の修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
インターフェースを使って依存性逆転の法則を守ったり依存性の注入をしたりすることと、内部クラスを持つことは
|
5
|
+
インターフェースを使って依存性逆転の法則を守ったり依存性の注入をしたりすることと、内部クラスを持つことは切り離して考えましょう。(そもそも内部クラスが必要になる場面は多くありません)
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
-
`IHIT`もインタフェースで使う名前としては不適切です。なぜならHitとは物
|
41
|
+
`IHIT`もインタフェースで使う名前としては不適切です。なぜならHitとは物ではなく振る舞いを示すものだからです。
|
42
42
|
|
43
43
|
|
44
44
|
|
@@ -48,7 +48,7 @@
|
|
48
48
|
|
49
49
|
Hitとは、受動態であってもなくとも英語のスペルはHitのままなので、私ならその動詞は使わないと思います。
|
50
50
|
|
51
|
-
もしHitが「プレイヤーが敵にダメージを与えること」を指しているのであれば、プレイヤーにHit相当のメソッドをもたせると思います。
|
51
|
+
もしHitが「プレイヤーが敵にダメージを与えること」を指しているのであれば、プレイヤーにHit相当のメソッドをもたせると思います。もしくは`IShootable`のようなインタフェースを作り、`Player`クラスに実装するかもしれません。
|
52
52
|
|
53
53
|
|
54
54
|
|