質問編集履歴

2

コメント追加

2018/07/26 13:29

投稿

tassi-yuzukko
tassi-yuzukko

スコア10

test CHANGED
File without changes
test CHANGED
@@ -36,6 +36,82 @@
36
36
 
37
37
  ### ① `out` 修飾子を使う
38
38
 
39
+ 例えば以下のような感じです。なんか手続き型チックで違和感がありますが、一番直?な気もします。
40
+
41
+
42
+
43
+ ```cs
44
+
45
+ class EmployeeNumber
46
+
47
+ {
48
+
49
+ int Value {get;}
50
+
51
+
52
+
53
+ public EmployeeNumber(int value)
54
+
55
+ {
56
+
57
+ Value = value;
58
+
59
+ }
60
+
61
+ }
62
+
63
+
64
+
65
+ // 成功した場合は返り値として社員番号を返す。失敗した場合はnullを返して、FailedReasonに失敗理由を設定して返す。
66
+
67
+ EmployeeNumber GetEmployeeNumberBy(string name, DateTime birthDay, out FailedReason failedReason);
68
+
69
+ // 本当にやるなら EmployeeNumber をヌルオブジェクトパターン適用すべきですが省略
70
+
71
+ ```
72
+
73
+
74
+
75
+ ### ② タプルで返す
76
+
77
+ 例えば以下のような感じです。これも手続き型脳的には素直な気がします。
78
+
79
+
80
+
81
+ ```cs
82
+
83
+ class EmployeeNumber
84
+
85
+ {
86
+
87
+ int Value {get;}
88
+
89
+
90
+
91
+ public EmployeeNumber(int value)
92
+
93
+ {
94
+
95
+ Value = value;
96
+
97
+ }
98
+
99
+ }
100
+
101
+
102
+
103
+ // 成功した場合は返り値として (社員番号, null) を返す。失敗した場合は (null, 失敗理由) を返す。
104
+
105
+ (EmployeeNumber employeeNumber, FailedReason? failedReason) GetEmployeeNumberBy(string name, DateTime birthDay);
106
+
107
+ // 本当にやるなら EmployeeNumber をヌルオブジェクトパターン適用すべきですが省略
108
+
109
+ ```
110
+
111
+
112
+
113
+ ### ③ 社員番号クラスの中に失敗理由を埋め込む
114
+
39
115
  例えば以下のような感じです。
40
116
 
41
117
 
@@ -48,82 +124,6 @@
48
124
 
49
125
  int Value {get;}
50
126
 
51
-
52
-
53
- public EmployeeNumber(int value)
54
-
55
- {
56
-
57
- Value = value;
58
-
59
- }
60
-
61
- }
62
-
63
-
64
-
65
- // 成功した場合は返り値として社員番号を返す。失敗した場合はnullを返して、FailedReasonに失敗理由を設定して返す。
66
-
67
- EmployeeNumber GetEmployeeNumberBy(string name, DateTime birthDay, out FailedReason failedReason);
68
-
69
- // 本当にやるなら EmployeeNumber をヌルオブジェクトパターン適用すべきですが省略
70
-
71
- ```
72
-
73
-
74
-
75
- ### ② タプルで返す
76
-
77
- 例えば以下のような感じです。
78
-
79
-
80
-
81
- ```cs
82
-
83
- class EmployeeNumber
84
-
85
- {
86
-
87
- int Value {get;}
88
-
89
-
90
-
91
- public EmployeeNumber(int value)
92
-
93
- {
94
-
95
- Value = value;
96
-
97
- }
98
-
99
- }
100
-
101
-
102
-
103
- // 成功した場合は返り値として (社員番号, null) を返す。失敗した場合は (null, 失敗理由) を返す。
104
-
105
- (EmployeeNumber employeeNumber, FailedReason? failedReason) GetEmployeeNumberBy(string name, DateTime birthDay);
106
-
107
- // 本当にやるなら EmployeeNumber をヌルオブジェクトパターン適用すべきですが省略
108
-
109
- ```
110
-
111
-
112
-
113
- ### ③ 社員番号クラスの中に失敗理由を埋め込む
114
-
115
- 例えば以下のような感じです。
116
-
117
-
118
-
119
- ```cs
120
-
121
- class EmployeeNumber
122
-
123
- {
124
-
125
- int Value {get;}
126
-
127
127
  FailedReason? FailedReason {get;}
128
128
 
129
129
 

1

ソースコード編集

2018/07/26 13:29

投稿

tassi-yuzukko
tassi-yuzukko

スコア10

test CHANGED
File without changes
test CHANGED
@@ -244,6 +244,10 @@
244
244
 
245
245
  domainEvent.Publisher(new DomainEvent<FailedReason>(FailedReason.NotMatchedBirthDay));
246
246
 
247
+
248
+
249
+ return 社員番号
250
+
247
251
  }
248
252
 
249
253
  ```