回答編集履歴
3
文章の修正
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
話の前後があるかもしれませんが、恐らくそれは間違いです。
|
6
6
|
|
7
|
-
むしろ、現実
|
7
|
+
むしろ、現実と同じような関係性をオブジェクト指向に適用すると混乱が生じます。
|
8
8
|
|
9
9
|
|
10
10
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
0. メインループを実装する目的が「ターン制のゲームにおけるターンの管理」「画面の描画」などであれば、それをプレイヤークラスが持つのは好ましくありません。その目的を行うにふさわしいクラス(例えば、ゲーム全体の流れを管理するクラス)が持つべきです。プレイヤーは残機や移動速度などの状態(フィールド)を持ち、移動や攻撃などの振る舞い(メソッド)を持つのが一般的にふさわしいと思います。
|
23
|
+
0. メインループを実装する目的が「ターン制のゲームにおけるターンの管理」「画面の描画」などであれば、それをプレイヤークラスが持つのは好ましくありません。その目的を行うにふさわしいクラス(例えば、ゲーム全体の流れを管理するクラス)が持つべきです。プレイヤークラスは残機や移動速度などの状態(フィールド)を持ち、移動や攻撃などの振る舞い(メソッド)を持つのが一般的にふさわしいと思います。
|
24
24
|
|
25
25
|
0. Runnableは和訳すると「(処理を)動作することができる、(足で)走ることができる」です。「~することができる」という表現に継承を用いるのは適切ではないでしょう。なぜなら、そのクラスが**実処理を持っているから**です。ですから、その実処理の内容に合わせてクラスを命名すべきです。(役割が大きくなりがちですが、GameManagerとでも命名したクラスを定義して、そこでメインループを作り、ゲームの流れを管理する方が**わかりやすい**と思います)
|
26
26
|
|
@@ -68,17 +68,19 @@
|
|
68
68
|
|
69
69
|
メソッドやクラスの命名から中のコードを見なくても何をしているのか**「すぐに」「大体」わかることが大切**です。
|
70
70
|
|
71
|
-
|
72
|
-
|
73
71
|
例えば「このメソッドの実装、どうなっていたっけな…。せや、中を見たろ!」となった時点で命名が正しくされていないことになります。
|
74
72
|
|
75
73
|
|
76
74
|
|
77
|
-
|
75
|
+
今回の場合は「プレイヤーがメインループを持って何かをすること」を分かりやすいと思うかどうかに着目すると良いでしょう。
|
78
76
|
|
79
77
|
|
80
78
|
|
79
|
+
私は ayorih さんのコードを見る限り「PlayerがRunnableを継承しているのなんでや」とか「Runnableなのになぜ実処理を持ってるねん」とかを疑問に感じました。そして、その疑問を解決するためにPlayerの中の実処理を確認すると思います。
|
80
|
+
|
81
|
+
|
82
|
+
|
81
|
-
ただし、私がそう認識しているだけですから、ayorih さんが作っていてそれで分かりやすいなら、あなたの中で思うオブジェクト指向的になんら問題ないということになります。そして、一人で開発されているのであれば、それで進めても問題ないのではと思います。
|
83
|
+
ただし、私がそう認識しているだけですから、ayorih さんが作っていてそれで分かりやすいなら、あなたの中で思うオブジェクト指向的になんら問題ないということになります。そして、一人で開発されていて、かつ命名規則がきちんと整理されているのであれば、それで進めても問題ないのではと思います。
|
82
84
|
|
83
85
|
|
84
86
|
|
2
文章の修正
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
0. メインループを実装する目的が「ゲームの描画」などであれば、それをプレイヤークラスが持つのは好ましくありません。その目的を行うにふさわしいクラス(例えば、ゲーム全体の流れを管理するクラス)が持つべきです。プレイヤーは残機や移動速度などの状態(フィールド)を持ち、移動や攻撃などの振る舞い(メソッド)を持つのが一般的にふさわしいと思います。
|
23
|
+
0. メインループを実装する目的が「ターン制のゲームにおけるターンの管理」「画面の描画」などであれば、それをプレイヤークラスが持つのは好ましくありません。その目的を行うにふさわしいクラス(例えば、ゲーム全体の流れを管理するクラス)が持つべきです。プレイヤーは残機や移動速度などの状態(フィールド)を持ち、移動や攻撃などの振る舞い(メソッド)を持つのが一般的にふさわしいと思います。
|
24
24
|
|
25
25
|
0. Runnableは和訳すると「(処理を)動作することができる、(足で)走ることができる」です。「~することができる」という表現に継承を用いるのは適切ではないでしょう。なぜなら、そのクラスが**実処理を持っているから**です。ですから、その実処理の内容に合わせてクラスを命名すべきです。(役割が大きくなりがちですが、GameManagerとでも命名したクラスを定義して、そこでメインループを作り、ゲームの流れを管理する方が**わかりやすい**と思います)
|
26
26
|
|
1
コード修正
test
CHANGED
@@ -42,7 +42,9 @@
|
|
42
42
|
|
43
43
|
public void run(){
|
44
44
|
|
45
|
-
//実処理
|
45
|
+
//メインループ等の実処理
|
46
|
+
|
47
|
+
//NOTE: 果たして、runという名前だけでメインループを行う処理であると周りは分かるのだろうか?
|
46
48
|
|
47
49
|
}
|
48
50
|
|
@@ -68,6 +70,10 @@
|
|
68
70
|
|
69
71
|
|
70
72
|
|
73
|
+
例えば「このメソッドの実装、どうなっていたっけな…。せや、中を見たろ!」となった時点で命名が正しくされていないことになります。
|
74
|
+
|
75
|
+
|
76
|
+
|
71
77
|
私は ayorih さんのコードを見た限りで、「Runnableなのになぜ実処理を持ってるねん」とか「PlayerがRunnableを継承しているのなんでや」とか思いました。
|
72
78
|
|
73
79
|
|