真面目な気分出して書いていたらすごい長くて堅苦しくてもったいぶった感じになってしまった... この記事の9割は壮大な前置きですw なにこれ 失敗の表現としてNullObjectパターン(以下楽なので勝手にNOPとします)を使うべきか議論をした際に論理立てて話せなかったので、 持論整理をしてついでにこの場を借りて晒してみようと言う記事です。 全ての状況において必ずEitherだ!と言うよりは、議論になったら僕はこう考えてますって言うためのポエムです。 DDD的な考えも少し この記事は実装都合のみに閉じていますが、DDD的な観点からも考えてみたことがあるのでこんな記事も書いてみました。 先に結論 前置きではない1割の部分だけ先出します。 それで「あ、そうか」とか「は?」とか思える人は以下の長大な前置きは不要ですw NOPは成功と失敗を区別しようとすると破綻する、けど区別したい事が珍しくない。
![失敗を表現する手法としてNullObjectパターンが不適切でEitherが適切だと思う理由 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/3cff6781f94ff9664d8f9567490dc2d5c5e4609d/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU1JUE0JUIxJUU2JTk1JTk3JUUzJTgyJTkyJUU4JUExJUE4JUU3JThGJUJFJUUzJTgxJTk5JUUzJTgyJThCJUU2JTg5JThCJUU2JUIzJTk1JUUzJTgxJUE4JUUzJTgxJTk3JUUzJTgxJUE2TnVsbE9iamVjdCVFMyU4MyU5MSVFMyU4MiVCRiVFMyU4MyVCQyVFMyU4MyVCMyVFMyU4MSU4QyVFNCVCOCU4RCVFOSU4MSVBOSVFNSU4OCU4NyVFMyU4MSVBN0VpdGhlciVFMyU4MSU4QyVFOSU4MSVBOSVFNSU4OCU4NyVFMyU4MSVBMCVFMyU4MSVBOCVFNiU4MCU5RCVFMyU4MSU4NiVFNyU5MCU4NiVFNyU5NCVCMSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9Mzk5ODhlNjE2ODM3NmRkNjMyZGMwODViZDI0NTllMjY%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBzdXp1a2ktaG9nZSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MWRjNmYwZDAxNmRiYzk3OGY5MTMzYjU3NjVlZTM5ZTg%26blend-x%3D142%26blend-y%3D436%26blend-mode%3Dnormal%26txt64%3DaW4g5qCq5byP5Lya56S-44Of44Op44Kk44OI44OH44K244Kk44Oz%26txt-width%3D770%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%2523212121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D156%26txt-y%3D536%26s%3D0c119ad643c3b8fc35b5e6bc0eaced15)