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

回答編集履歴

2

サンプルコードにコメント追記

2018/03/10 12:24

投稿

think49
think49

スコア18194

answer CHANGED
@@ -22,6 +22,37 @@
22
22
 
23
23
  1. 生徒・講師・教室それぞれに予約可能条件を確認する (`checkReservationAll`)
24
24
  2. エラーメッセージをまとめて出力 (`outputError`)
25
- 3. エラーがなければ、まとめて実行する (`reserveAll`, `reserveStudent`, `reserveTeacher`, `reserveStudentClassRoom`)
25
+ 3. エラーがなければ、まとめて実行する (`reserveAll`, `reserveStudent`, `reserveTeacher`, `reserveClassRoom`)
26
26
 
27
+ ```JavaScript
28
+ 'use strict';
29
+ /**
30
+ * 関数定義
31
+ */
32
+ function checkReservationAll () {} // 生徒、教師、教室を予約可能かチェックし、不可能ならエラーオブジェクトの配列を返す
33
+ function outputError () {} // エラーメッセージを出力
34
+
35
+ function reserveAll () { // 全予約処理(生徒、教師、教室)を実行
36
+ reserveStudent(); // 生徒の予約
37
+ reserveTeacher(); // 教師の予約
38
+ reserveClassRoom(); // 教室の予約
39
+ }
40
+ function reserveStudent () {} // 生徒の予約 // 生徒の予約
41
+ function reserveTeacher () {} // 教師の予約
42
+ function reserveClassRoom () {} // 教室の予約
43
+
44
+ /**
45
+ * 実行処理
46
+ */
47
+ var errorList = checkReservationAll();
48
+
49
+ if (errorList) {
50
+ outputError(errorList);
51
+ }
52
+
53
+ reserveAll();
54
+ ```
55
+
56
+ 分かりやすさ重視で愚直に書きましたが、`reserveAll` は配列を繰り返し処理するとよりスマートだと思います。
57
+
27
58
  Re: KazuhiroHatano さん

1

エラーメッセージを出力する、設計の見直し

2018/03/10 12:24

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,3 +1,5 @@
1
+ ### 例外を投げる
2
+
1
3
  `throwErrorFunction` というところでしょうか。
2
4
  しかしながら、
3
5
 
@@ -6,4 +8,20 @@
6
8
  このような関数を作る設計がどこかおかしい気がしています。
7
9
  例外を返すだけなら関数化する必要性を感じません。
8
10
 
11
+ ### エラーメッセージを出力する
12
+
13
+ > 簡単に言えば授業予約システムで、生徒・講師・教室それぞれに予約可能条件と予約時の処理があり
14
+ > それら全ての条件がクリアである場合のみそれぞれの予約時の処理を実行する
15
+ > 何か不備があればその旨をユーザーに知らせるメッセージを出力する
16
+
17
+ 「例外を返す」ではなく、エラーメッセージを得たいのであれば、`getErrorMessage` でしょうか。
18
+
19
+ ### 設計の見直し
20
+
21
+ 関数呼び出ししてみて予約可能か確認しているように見受けられますが、「予約可能の確認処理」と「予約処理」は別個の関数に分離させるとすっきりするように感じます。
22
+
23
+ 1. 生徒・講師・教室それぞれに予約可能条件を確認する (`checkReservationAll`)
24
+ 2. エラーメッセージをまとめて出力 (`outputError`)
25
+ 3. エラーがなければ、まとめて実行する (`reserveAll`, `reserveStudent`, `reserveTeacher`, `reserveStudentClassRoom`)
26
+
9
27
  Re: KazuhiroHatano さん