回答編集履歴

3

文章の修正

2020/06/25 08:44

投稿

BluOxy
BluOxy

スコア2663

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
- ayorih さんのコ見た限りで、「Runnableなのになぜ実処理を持ってるねん」とか「PlayerがRunnableを継承していのなんでや」か思
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

文章の修正

2020/06/25 08:44

投稿

BluOxy
BluOxy

スコア2663

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

コード修正

2020/06/25 08:31

投稿

BluOxy
BluOxy

スコア2663

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