- 84 名前:デフォルトの名無しさん mailto:sage [2016/07/13(水) 06:22:04.43 ID:7t1kL6eB.net]
- >>80
>契約プログラミング C++だとBoost.Contract .NetだとSystem.Diagnostics.Contracts があるね 使ったことないけど >例外保証 なんか、まじめに考え過ぎな気がする どのクラスがどの例外保証を持っているかなんて、気にして書いている人なんていないんじゃないか (と、言うとちゃんとやってる人に怒られそうだが) 例外安全、例外耐性を考慮して、きれいにやるなら把握しているに超したことはないけれど 基本的には「いちいち戻り値でエラー判定するのが面倒。戻り値だとエラー判定忘れることがある(アプリがエラー状態のまま動き続けてしまう)。例外をつかえばそれらを簡単に回避できる」くらいの感覚で使われてるんじゃないかな 例えばオブジェクト指向でクラス設計するときはSOLID原則を意識することはあれ、 そこまで厳密に遵守して書かないし、他人の書いたクラスがSOLID原則に則ってるかなんて気にしないでしょ? それに今時の言語なら標準ライブラリが例外を投げるから、それらを使うなら自分のコードでも例外を使うことで 「このコードでは、エラーは常に例外で通知する」という一貫性が生まれる プログラミングにおいて一貫性は重要だ 先日のGoogleのスタイルだと「例外を使わない」という点で一貫性がある もちろん、現実世界ではそんなにすべてうまくいかないから 必要があれば戻り値のエラー通知を部分的に使うのはかまわないと思うよ .Netにも例外を投げるInt32.Perseと投げないInt32.TryPersreの2種類があるし >Either "C++ Either"や"C# Either"でググれば「書いてみた」系のブログが引っかかる
|

|