私が働いている会社で開発しているソフトウェアには、常に連絡を取り合っている人が開発したサードパーティのライブラリを使用しています。彼のコードは C++ で書かれており、プロジェクトでは C# を使用しています。
通常、彼のライブラリ関数はエラー コードを返します。さまざまな範囲のエラー コードをカバーするために、さまざまな例外クラスを用意することにしました。たとえば、パラメーター処理エラーの例外クラスが 1 つ、メイン操作エラーの例外クラスが 1 つ、入力値エラーの例外クラスが 1 つなどです。
彼はそれは良い考えではないと考えており、すべてのエラーをキャッチし、XML ファイルからエラー コードを取得してユーザーに問題を出力するライブラリに 1 つの例外クラスを使用することを提案しています。彼は、複数の例外クラスを書くのは無意味だと考えています。また、彼は、ライブラリの異なるバージョンでエラー コードが同じになるとは約束できないとも言っています。
次の理由から、複数の例外クラスを用意することをお勧めします。
- 問題を別の方法で処理する必要があるさまざまな状況があるかもしれません。パラメーターの例外が発生した場合は、エラーを出力するだけでなく、他のことを行うこともできます。しかし、彼は自分のライブラリがすべてを処理していると考えており、操作を停止してエラーを出力する必要があります。また、エラー メッセージを表示する以外に、別の方法で処理する必要があるケースの具体的な例はあまり思いつきません。しかし、私はそれが必要かもしれないと感じており、YAGNI の原則に違反しているのではないかと心配しています。
- 彼が間違っていることが判明し、さまざまなケースで異なる方法で処理する必要がある場合は、条件付きコードを導入する必要があると思います (エラーが A の場合はこれを行い、B の場合はそれを行います)。そして扱いづらくなります。
さまざまな種類の例外を異なる方法で処理できるようにプログラムを開発する方がよいと思います。しかし、その人は私よりもはるかに経験が豊富で、会社での信頼性も高く (私は新しいインターンです)、私はソフトウェア開発にかなり慣れていないので、おそらく彼は正しいと思います。見栄えが良く、YAGNI の原則に違反しているという理由で余分なコードを追加する。
1 つまたは複数のクラスを使用する必要があると思いますか? また、複数の例外クラスを使用する必要があると考える場合、その理由は何ですか?