3

私は2つの方法で書くことができるこのコードを持っています

ファーストウェイ

void func(int val)
{
     if(val == 0)
          return;

     // Do something ...
}

第二の方法

void func(int val)
{
     if(val != 0)
     {
          // Do something ...
     }          
}

質問:

最初の方法を使用する理由はありますか?最初の方法を使用する利点はありますか(C ++またはC#で)

4

8 に答える 8

10

最初の方法を使用する主な理由は、ソースファイルのネストを減らすことです。

于 2012-08-02T06:13:26.130 に答える
5

ネストを減らすには、「if」ステートメントを反転するを参照してください。

基本的に、これは「//何かをする...」が多くのコードである場合に重要になります。

于 2012-08-02T06:16:51.460 に答える
5

複数の条件があると想像して、これを見てください。

if (...)
{
  if (...)
  {
     if (...)
     {
        if (...)
        {
           if (...)
           {
             ...
           }
        }
     }
  }
}

この:

if (!...)
  return;

if (!...)
  return;

if (!...)
  return;

if (!...)
  return;

if (!...)
 ...

2つ目は読みやすく便利だと思います。
1つまたは2つの条件がある場合、違いは重要ではありません。

于 2012-08-02T06:24:43.847 に答える
3

はい、前の回答で述べたように利点があります。C ++でタグ付けされているため、 First Wayを使用する場合は、割り当てられたメモリを解放するように注意する必要があります。

たとえば、このような悪いコードが存在する可能性があります

void func(int val)
{
     Foo *obj = new Foo();
     if(val == 0)
          return;

     // Do something ...
    delete obj;        // Possible Memory leak
}
于 2012-08-02T06:21:15.063 に答える
1

違いはありません-どちらを使用するかは、読みやすさ、理解しやすさなどの影響を受けて、どちらか一方に対する主観的な好みに完全に依存します

于 2012-08-02T06:12:24.443 に答える
1
  • 定義された値ですばやく終了したい場合は、前に戻る方がよいはずです。
  • ただし、このケースがまれな場合は、適切なデータを直接処理することをお勧めします。

使用する言語に応じて、パフォーマンスへの影響は大きくなるか、わずかになります。

明確にすることを目的としている場合は、条件の後に呼び出されるいくつかの関数を適切にする必要があります。いくつかの部分は異なるケースを管理し、いくつかの部分はそれを処理します。

このようにして、保守性と可読性を向上させる必要があります。

于 2012-08-02T06:18:46.990 に答える
0

あなたが最初の方法として呼び出す場合、それは残りのものを実行しません。直接戻るからです。ただし、2番目の方法を使用すると、内のコードが実行されます。

于 2012-08-02T06:14:03.197 に答える
0

Voidメソッドは、常にreturnステートメントを必要としません。ただし、戦略的な場所で「return」を使用して、終了条件が発生したときに不要なステートメントを実行しないようにすることができます。

于 2012-08-02T06:14:28.390 に答える