簡體   English   中英

有沒有理由在方法的第二行使用'return'?

[英]Is there any reason to use the 'return' in the second line in the method ?

我有這個代碼,我們可以用兩種方式編寫

第一道路

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

     // Do something ...
}

第二種方式

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

問題:

有沒有理由使用第一種方式? 是否有任何優勢使用第一種方式(在C ++或C#中)

使用第一種方法的主要原因是減少源文件中的嵌套。

請參閱反轉“if”語句以減少嵌套

基本上,當'//做某事......'是很多代碼時,這變得很重要。

想象一下,有多個條件,看看這個:

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

和這個:

if (!...)
  return;

if (!...)
  return;

if (!...)
  return;

if (!...)
  return;

if (!...)
 ...

我認為,第二個更方便可讀。
如果有一個或兩個條件,差異是微不足道的。

是的,以前的答案中提到了優點。 由於它是用C ++標記的,因此在使用First Way時應注意釋放分配的內存。

對於Eg,可能會出現這樣的錯誤代碼

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

     // Do something ...
    delete obj;        // Possible Memory leak
}

沒有區別 - 是否使用其中一個或另一個完全取決於您對一方或另一方的主觀偏好,受可讀性,可理解性等因素的影響

  • 如果你想快速退出定義的值,那么之前返回應該更好,
  • 但如果這種情況很少見,那么直接處理好數據可能會更好。

根據您使用的語言,對性能的影響應該更大或不重要。

如果它的目的是為了清晰,那么在條件之后調用一些函數應該是好的。 一些部件管理不同的情況,一些部件處理它。

應該以這種方式改進可維護性和可讀性。

如果你打電話作為第一種方式,那么它不會運行剩下的事情。 因為它直接返回 但是如果你使用第二種方式,那么will中的代碼就會運行。

Void方法總是不需要return語句。 但是,您可以在戰略位置使用“返回”,以避免在遇到退出條件時執行不必要的語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM