0

これらのどれがより最適ですか?どちらを使用するかは重要ですか?

If (condition is true)
{
    MessageBox.Show("bad data");
    return;
}

//mode code here 

また

If (condition is true)
{
    MessageBox.Show("bad data"); 
}
else
{
    //mode code here
}
4

5 に答える 5

2

2つは機能的に同じです。どちらも、動作やパフォーマンスの点で実際には他より優れているわけではありません。ここでの唯一の本当の問題は読みやすさであり、それは例の詳細と関係するプログラミングチームによって異なります。つまり、好きなものを選んでください。

これらのアサーションが当てはまるようにするには、例がもう少し完全である必要があることに注意してください。それは本当に比較しているはずです。

public static void returnMethod()
{
    if (true)
        MessageBox.Show("bad data");

    //restOfMethod
}

と:

public static void elseMethod()
{
    if (true)
        MessageBox.Show("bad data");
    else
    {
        //restOfMethod
    }
}
于 2012-09-27T13:59:28.403 に答える
1

私はあなたが意味するものはもっと似ていると思います

If (condition is true) 
{ 
    MessageBox.Show("bad data"); 
    return; 
} 

...more code here...

vs

If (condition is true)    
{    
    MessageBox.Show("bad data");     
}    
else    
{    
    ...more code here...
}

いいえ、パフォーマンスの違いはありません。

これは、デザインの好みにもっと当てはまります。一部の人々は、メソッドから抜け出すためにリターンを使用することは決してありませんが、コードをシンプルできちんと保つことを好む人もいます。リターンを使用することがそれを助けるのであれば、はるかに優れています。

于 2012-09-27T14:02:37.413 に答える
0

これはいくつかのことに依存します。条件の後に、適用できなくなる追加のコードがありますか?その場合、差し迫ったステートメントの実行を妨げるため、returnがより最適になります。

もう1つのアイデアは、これをどのように配置するかです。これがリターンのあるメソッドにある場合は、それを使用します。同様に、周囲の関数がreturnを受け入れるようにすることが適切でない場合は、returnを使用したくないでしょ

それは意味がありますか?

于 2012-09-27T13:57:38.567 に答える
0

それが単なるプレースホルダーであり、その場合は次のようなことをしない限り、空のelse{}ステートメントは絶対にありません。

    else
    {
        //Todo: Fill in logic to handle the else case, waiting for business to get back to me
    }

個人的には「if」の中に戻るのは問題ないと思いますが、その下に何もない場合は「return;」と書きます。数百ピクセルの無駄です。それが数ピクセルでまったく同じことをし、理解するのが難しくなければ、私はいつもそれを選びます。

于 2012-09-27T14:04:18.707 に答える
0

if-elseとreturnが同じことをするシナリオ(他の回答でいくつかの例が提供されています)では、読みやすさが重要だと思います。

私は、「if」の場合、「else」を書くか直接「return」を書くかは実際には問題ではないと思います。一部の「if-else」ステートメントがネストされていると、さらに悪化します。メソッド内にも複数の「return」があると、まったく読めなくなる可能性があります。

私はif-elseをネストするのが好きではなく、同じメソッド内に複数の戻り値を配置することもありません。しかし、私が選択しなければならない場合、私は複数の「リターン」を持つことを好みます。

于 2012-09-27T14:11:52.643 に答える