2

単純なファクトリを作成しましたが、それを拡張して他の実装をカバーする前に、スイッチ/デフォルトから戻るための正しい/推奨される動作は何か疑問に思っていました。

以下のケースでは、enumeration(SerialisationTypes) を使用して必要な具体的な実装を決定しています。デフォルトでは、パラメーターの少ないメソッドを使用して JSON シリアライザーの実装を返す予定ですが、これは switch ステートメントの Default で正しい動作になるでしょうか?私は例外をスローしますか?

namespace Helper.Core.Serialisation
{
    internal class SerialisationFactory
    {
        internal ISerialiser Create()
        {
            return Create(SerialisationTypes.JsonSerialiser);
        }

        internal ISerialiser Create(SerialisationTypes type)
        {
            switch (type)
            {
                case SerialisationTypes.JsonSerialiser:
                    return new JSonSerialiser();
                default:
                    return new JSonSerialiser();
            }
        }
    }
}
4

2 に答える 2

3

ユーザーが実装していないものを要求しているため、例外をスローした方がよいでしょう。

さらに、コード内で、列挙に追加の値 (XmlSerialiser、ProtbufSerializer など) がある場合は、常に JSonSerialiser を返すことになり、見つけにくいバグにつながります。例外をスローしてからコードを修正することをお勧めします。

于 2012-11-02T10:51:30.683 に答える
2

通常、タイプが見つからない場合は、コーディング エラーの兆候です。デフォルトを返すと、後で例外をスローしたときにエラーが表示されます。そして、自分自身や他の開発者からエラーを隠しています。したがって、例外をスローすると、開発プロセスの早い段階でバグを見つけるのに役立ちます。また、バグを早期に発見することで、正しく機能するソフトウェアを提供するための費用と時間を削減できます。

于 2012-11-02T10:48:53.320 に答える