回答編集履歴

4

追記

2021/07/26 11:50

投稿

BluOxy
BluOxy

スコア2663

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

コード修正

2021/07/26 11:50

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  {
86
86
 
87
- target.GetShotBy(bullet);
87
+ target.GetShotBy(Bullet);
88
88
 
89
89
  }
90
90
 
@@ -158,7 +158,7 @@
158
158
 
159
159
  {
160
160
 
161
- target.GetShotBy(bullet);
161
+ target.GetShotBy(Bullet);
162
162
 
163
163
  }
164
164
 

2

文章の修正

2021/07/26 11:47

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -6,11 +6,13 @@
6
6
 
7
7
 
8
8
 
9
- そもそも、インターフェースを使ったり、依存性逆転の法則、依存性の注入をしたりすることの目的は整理できているでしょうか。
9
+ そもそも、インターフェースを使ったり、依存性逆転の法則、依存性の注入をしたりすることの目的は整理できているでしょうか。1つは、機能追加・修正をしやすいコードを書くためです。
10
-
11
-
12
-
10
+
11
+
12
+
13
- 1つは、機能追加・修正しやいコードを書くためです。
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

文章の修正

2021/07/26 11:43

投稿

BluOxy
BluOxy

スコア2663

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