C# では、値を返さないコード パスが存在することがありますが、コンパイラがエラーを出して修正できるのは良いことです。ただし、STRUCTURALLY が存在しない場所がある場合もありますが、ALOGIRTHM はその構造が発生するのを防ぎます。
これは単純な考案された例です。
public static int test1(bool a)
{
if (a) return 1;
if (!a) return 2;
}
もちろん、私の「アルゴリズム」はばかげていて、2 番目のテストは冗長であり、そうするべきだと人々は言うでしょう。
public static int test1(bool a)
{
if (a) return 1;
else return 2;
}
あるいは
public static int test1(bool a)
{
if (a) return 1;
return 2;
}
この問題に具体的に焦点を当てたいので、実際のアルゴリズムではなく、この単純な「冗長な」例を意図的に選択します。アルゴリズムを記述できる約10の異なる方法ではありません:)
では、これに対処するための可能な方法と、それぞれの長所と短所は何ですか。
1) は先ほど説明したもので、それがアルゴリズムのリファクタリングです。これが不可能な場合もあれば、最終結果がフォルマントどおりでなく、読みやすく、理解しやすく、保守しにくい場合もあります。
もう1つは、nullなど、決して起こらない何かを返すことです..しかし、この場合、私は整数を扱っているので、0を入力する必要があります。
public static int test1(bool a)
{
if (a) return 1;
if (!a) return 2;
//this code never happens, but i need to keep the compiler happy
return 0;
}
または例外を使用する
public static int test1(bool a)
{
if (a) return 1;
if (!a) return 2;
throw new Exception("this code never happens, but i need to keep the compiler happy");
}
しかし、これに対処するたびに、どんなテクニックを使用しても、結果に満足できず、少し汚いと感じます.
代替手段はありますか?