私のチームは最近、コーディング基準の統合の出発点としてLance Hunt's C# Coding Standards文書の使用を開始しました。ランスハントのC#コードの標準 - enumの混乱
私たちはちょうどそのポイントを理解していない1つの項目があります。
が常に消費 前に列挙変数またはパラメータ値を検証:
アイテムは数77です。基になる列挙型 (既定のint)がサポートする任意の 値を含むことがあります。
例:
public void Test(BookCategory cat) { if (Enum.IsDefined(typeof(BookCategory), cat)) {…} }
「フレームワークの設計ガイドラインの再利用可能な.NETライブラリのための規則、慣用句、およびパターン」私はあなたが常にデフォルトを持っていることに同意します:新しいArgumentOutOfRangeExceptionをスローします。また、新しい値が列挙に追加されるシナリオについても説明します。 –
おそらく、NotSupportedExceptionがより適切かもしれません。 –
合意!新しいOldShoeException()を投げることは、ロジックを落とさせることと、結果として他の場所に現れるバグを引き起こすことよりも優れています。 –