teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

メイン処理をクリックイベントに修正

2018/01/03 15:17

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -77,10 +77,8 @@
77
77
  実際に、オセロのプログラムを組んでいてこの問題に直面しているため、それを例として挙げます。
78
78
  ```JavaScript
79
79
  $(function(){
80
- // メイン処理
81
- main();
82
80
 
83
- function main() {
81
+ $('li').click(function() {
84
82
  // 選択された箇所のx座標、y座標を取得
85
83
  var y = getPutY();
86
84
  var x = getPutX();

5

if文の構文修正

2018/01/03 15:17

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -92,7 +92,7 @@
92
92
  * ここでチェック処理を入れないと、相手の石がひっくり返せなくても
93
93
  * 自分の石が置けたり、手番が交代したりしてしまいます。
94
94
  */
95
- if isErrorPutStone() { return; }
95
+ if (isErrorPutStone()) { return; }
96
96
 
97
97
  // 選択箇所に自分の石を置く
98
98
  putStone(y, x);

4

ロジックの具体例を加筆

2018/01/03 15:03

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -61,11 +61,58 @@
61
61
  }
62
62
  ```
63
63
  ~~**「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**~~
64
- ~~ってなってます(´・ω・`)~~
64
+ ~~ってなってます(´・ω・)~~
65
65
  →**「メイン処理とチェック処理を本来分けてたものを、一緒のメソッドに入れると分かりにくそう」**
66
66
  ってなってます(´・ω・)
67
67
 
68
68
  そこで質問なのですが、処理を行うごとに入るチェック処理と
69
69
  実際の処理を明確に分けたい場合、どのように記述すればいいですか?
70
70
 
71
- ご教示のほど、よろしくお願いいたします。
71
+ ご教示のほど、よろしくお願いいたします。
72
+
73
+ ---
74
+ ▽以下、修正&加筆:
75
+
76
+ 具体例に関して、修正依頼をいただきましたので、加筆いたします。
77
+ 実際に、オセロのプログラムを組んでいてこの問題に直面しているため、それを例として挙げます。
78
+ ```JavaScript
79
+ $(function(){
80
+ // メイン処理
81
+ main();
82
+
83
+ function main() {
84
+ // 選択された箇所のx座標、y座標を取得
85
+ var y = getPutY();
86
+ var x = getPutX();
87
+
88
+ // 相手の石がひっくり返せる座標を取得
89
+ getReversibleCoordinate();
90
+
91
+ /**
92
+ * ここでチェック処理を入れないと、相手の石がひっくり返せなくても
93
+ * 自分の石が置けたり、手番が交代したりしてしまいます。
94
+ */
95
+ if isErrorPutStone() { return; }
96
+
97
+ // 選択箇所に自分の石を置く
98
+ putStone(y, x);
99
+
100
+ // 相手の石をひっくり返す
101
+ reversibleEnemyStone();
102
+
103
+ // 手番を交代する
104
+ turnChange();
105
+ }
106
+
107
+ function getReversibleCoordinate() {
108
+ // 相手の石がひっくり返せる座標を取得
109
+ }
110
+
111
+ function isErrorPutStone() {
112
+ // 相手の石がひっくり返せる座標を取得できなかった場合を検証
113
+ // 自分の石が置けなかった場合を検証
114
+ }
115
+ });
116
+ ```
117
+ ……なんだか、元の質問とは別の部分を指摘されそうですが。。
118
+ ロジックの組み方に関して、ツッコミ所があれば、ご指摘いただけると助かります(´・ω・)

3

文言の修正

2018/01/03 14:45

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -60,8 +60,10 @@
60
60
  // isCheckedProcessAの処理
61
61
  }
62
62
  ```
63
- **「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**
63
+ ~~**「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**~~
64
+ ~~ってなってます(´・ω・`)~~
65
+ →**「メイン処理とチェック処理を本来分けてたものを、一緒のメソッドに入れると分かりにくそう」**
64
- ってなってます(´・ω・`)
66
+ ってなってます(´・ω・)
65
67
 
66
68
  そこで質問なのですが、処理を行うごとに入るチェック処理と
67
69
  実際の処理を明確に分けたい場合、どのように記述すればいいですか?

2

文言の修正

2018/01/03 06:16

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -55,10 +55,9 @@
55
55
  ▽`processA`のメソッド内のイメージ
56
56
  ```JavaScript
57
57
  function processA() {
58
- try {
59
- // 本来のprocessAの処理
58
+ // 本来のprocessAの処理
60
- // ……
59
+ // ……
61
- // isCheckedProcessAの処理;
60
+ // isCheckedProcessAの処理
62
61
  }
63
62
  ```
64
63
  **「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**

1

具体例を加筆、文言の修正等

2018/01/03 06:10

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -49,9 +49,19 @@
49
49
  });
50
50
  ```
51
51
  これだとすっきりするんですけど、「じゃあどこでチェック処理やるの?」と考えたとき、
52
- 例えば`processA`中エラーが発生した場合、`processA()`の処理中で例外を飛ばすしかありません。
52
+ 例えば`processA`処理エラーが発生した場合、`processA`の処理中で例外を飛ばすくらいしか
53
+ 解決策が今のところ思い付きません……
53
54
 
55
+ ▽`processA`のメソッド内のイメージ
56
+ ```JavaScript
57
+ function processA() {
58
+ try {
59
+ // 本来のprocessAの処理
60
+ // ……
61
+ // isCheckedProcessAの処理;
62
+ }
63
+ ```
54
- **「いやいや、それって単に`isCheckedProcessA()`を`processA()`に入れただけやんけ!」**
64
+ **「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**
55
65
  ってなってます(´・ω・`)
56
66
 
57
67
  そこで質問なのですが、処理を行うごとに入るチェック処理と