回答編集履歴

2

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

2018/03/10 12:24

投稿

think49
think49

スコア18166

test CHANGED
@@ -46,7 +46,69 @@
46
46
 
47
47
  2. エラーメッセージをまとめて出力 (`outputError`)
48
48
 
49
- 3. エラーがなければ、まとめて実行する (`reserveAll`, `reserveStudent`, `reserveTeacher`, `reserveStudentClassRoom`)
49
+ 3. エラーがなければ、まとめて実行する (`reserveAll`, `reserveStudent`, `reserveTeacher`, `reserveClassRoom`)
50
+
51
+
52
+
53
+ ```JavaScript
54
+
55
+ 'use strict';
56
+
57
+ /**
58
+
59
+ * 関数定義
60
+
61
+ */
62
+
63
+ function checkReservationAll () {} // 生徒、教師、教室を予約可能かチェックし、不可能ならエラーオブジェクトの配列を返す
64
+
65
+ function outputError () {} // エラーメッセージを出力
66
+
67
+
68
+
69
+ function reserveAll () { // 全予約処理(生徒、教師、教室)を実行
70
+
71
+ reserveStudent(); // 生徒の予約
72
+
73
+ reserveTeacher(); // 教師の予約
74
+
75
+ reserveClassRoom(); // 教室の予約
76
+
77
+ }
78
+
79
+ function reserveStudent () {} // 生徒の予約 // 生徒の予約
80
+
81
+ function reserveTeacher () {} // 教師の予約
82
+
83
+ function reserveClassRoom () {} // 教室の予約
84
+
85
+
86
+
87
+ /**
88
+
89
+ * 実行処理
90
+
91
+ */
92
+
93
+ var errorList = checkReservationAll();
94
+
95
+
96
+
97
+ if (errorList) {
98
+
99
+ outputError(errorList);
100
+
101
+ }
102
+
103
+
104
+
105
+ reserveAll();
106
+
107
+ ```
108
+
109
+
110
+
111
+ 分かりやすさ重視で愚直に書きましたが、`reserveAll` は配列を繰り返し処理するとよりスマートだと思います。
50
112
 
51
113
 
52
114
 

1

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

2018/03/10 12:24

投稿

think49
think49

スコア18166

test CHANGED
@@ -1,3 +1,7 @@
1
+ ### 例外を投げる
2
+
3
+
4
+
1
5
  `throwErrorFunction` というところでしょうか。
2
6
 
3
7
  しかしながら、
@@ -14,4 +18,36 @@
14
18
 
15
19
 
16
20
 
21
+ ### エラーメッセージを出力する
22
+
23
+
24
+
25
+ > 簡単に言えば授業予約システムで、生徒・講師・教室それぞれに予約可能条件と予約時の処理があり
26
+
27
+ > それら全ての条件がクリアである場合のみそれぞれの予約時の処理を実行する
28
+
29
+ > 何か不備があればその旨をユーザーに知らせるメッセージを出力する
30
+
31
+
32
+
33
+ 「例外を返す」ではなく、エラーメッセージを得たいのであれば、`getErrorMessage` でしょうか。
34
+
35
+
36
+
37
+ ### 設計の見直し
38
+
39
+
40
+
41
+ 関数呼び出ししてみて予約可能か確認しているように見受けられますが、「予約可能の確認処理」と「予約処理」は別個の関数に分離させるとすっきりするように感じます。
42
+
43
+
44
+
45
+ 1. 生徒・講師・教室それぞれに予約可能条件を確認する (`checkReservationAll`)
46
+
47
+ 2. エラーメッセージをまとめて出力 (`outputError`)
48
+
49
+ 3. エラーがなければ、まとめて実行する (`reserveAll`, `reserveStudent`, `reserveTeacher`, `reserveStudentClassRoom`)
50
+
51
+
52
+
17
53
  Re: KazuhiroHatano さん