質問編集履歴
1
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,30 +1,30 @@
|
|
1
1
|
次のようなメソッドを考えます。
|
2
2
|
|
3
|
-
registerUser(User user)
|
3
|
+
`registerUser(User user)`
|
4
4
|
- このメソッドはUserをデータストアに登録する
|
5
5
|
- 発生しうるエラーには3種類あり次の通りである
|
6
6
|
- 「データストアへの登録の失敗」
|
7
7
|
- 「ユーザーネームの重複」
|
8
8
|
- 「パスワードに無効な文字が使われている」
|
9
9
|
|
10
|
-
registerUserメソッドを呼び出す処理の中で、登録ができたのかどうかを判定したいです。
|
10
|
+
`registerUser` メソッドを呼び出す処理の中で、登録ができたのかどうかを判定したいです。
|
11
11
|
登録に失敗している場合、エラーの種別に応じてその後の処理を変更したいです。(例: ユーザーネームが重複している場合、「ユーザーネームが重複しているので変更してください」と促したい)
|
12
12
|
|
13
13
|
このような処理を行う場合次のような3つのフローが考えられます。
|
14
14
|
|
15
|
-
1. registerUserはintまたはエラーオブジェクトを返す。呼び出し元は返ってきた数値またはオブジェクトからエラー情報を読み取る
|
15
|
+
1. `registerUser` は `int` またはエラーオブジェクトを返す。呼び出し元は返ってきた数値またはオブジェクトからエラー情報を読み取る
|
16
|
-
2. registerUserはエラーが起きた場合、それぞれのエラーに対応する例外を投げる。呼び出し元はtry-catch文で処理を囲い、3種類の例外をcatchし処理を行う
|
16
|
+
2. `registerUser` はエラーが起きた場合、それぞれのエラーに対応する例外を投げる。呼び出し元は `try-catch` 文で処理を囲い、3種類の例外をcatchし処理を行う
|
17
|
-
3. 新しいメソッド
|
17
|
+
3. 新しいメソッド `checkDuplicatedUsername` `checkValidPassword` を用意し、それぞれ確認を行ってから `registerUser` を呼び出す。
|
18
18
|
|
19
19
|
個人的には1が好みなのですがJava的にはどうなのでしょうか?
|
20
20
|
以下2、3の私が考えたデメリットです。
|
21
21
|
|
22
22
|
2のデメリット
|
23
|
-
- 確実にエラーが起きないような場合でも、呼び出すたびにtry-catchしなければならず冗長
|
23
|
+
- 確実にエラーが起きないような場合でも、呼び出すたびに `try-catch` しなければならず冗長
|
24
24
|
- この方法で統一した場合コードが膨大になる
|
25
25
|
|
26
26
|
3のデメリット
|
27
|
-
- registerUserを呼び出すルールがメソッド内で閉じていない。(あらかじめ2つのメソッドを呼び出す前提となっているため、仕様を詳しく知らない人に不親切)
|
27
|
+
- `registerUser` を呼び出すルールがメソッド内で閉じていない。(あらかじめ2つのメソッドを呼び出す前提となっているため、仕様を詳しく知らない人に不親切)
|
28
28
|
|
29
29
|
|
30
30
|
よろしくお願いします。
|