コンストラクタで例外を出すのが妥当なら出すべきだ
しかし、例外を出すような責務は得てしてファクトリやリポジトリなど外部のクラスが担うことが多い傾向にある
なので正確に言うと、オブジェクトの生成という責務を分離してない汚いプログラムはダメだ、なんだけど
それが誤って拡散した結果、コンストラクタで例外を出すプログラムはダメだ、に拡大解釈されてしまったのだろう
// コレは生成責務が分離されてないからダメだ
class Hoge {
public Hoge(int id) {
var dto = DB.FindHoge(id); // 例外なげる
m_id = id;
m_name = dto.name;
}
// コレは責務が分離されてるからOK
class HogeRepository {
public Hoge Find(int id) {
var dto = m_db.FindHoge(id); // 例外なげる
return new Hoge(id, dto.name); // 実装次第で投げたり投げなかったり
}
// コレもOK 例外投げるが責務としては妥当
class Hoge {
public Hoge(int id, string name) {
if (id < 0) throw new BadHogeFormat("id");
if (UTIL.NotMatch(@"^H\d{8}$", name)) throw new BadHogeFormat("name");
m_id = id;
m_name = name;
}
ふらっと C#,C♯,C#(初心者用) Part142
■ このスレッドは過去ログ倉庫に格納されています
537デフォルトの名無しさん (アウアウエー Sa13-OsmV)
2019/04/27(土) 12:22:00.72ID:yNGf8etVa■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【お詫び】NTTドコモ、緊急地震速報が配信されなかった事象について 「システム不具合」 [おっさん友の会★]
- 【速報】首相、夜はスマホ最大音量で横に 「危機管理に注力」とアピール [少考さん★]
- 【野球】パ・リーグCS第3戦 H 6-2 F [10/16] 福岡ソフトバンクホークス日本シリーズ進出決定 日本ハム3タテくらい敗退 [鉄チーズ烏★]
- 【教育】日教組、年間の授業時間の引き下げを提言 小学校で年1015コマ→875コマ 教員の勤務時間などを踏まえ [煮卵★]
- 【公明党】自公再連立「将来縛らず」 斉藤元代表、政治改革条件 [nita★]
- 【速報】 植田日銀総裁 「基調物価がこれ以上上がることは容認できない」 [お断り★]