2016-05-04 6 views
0

は、以下の実施例において任意の変数に割り当てることなく、直接、戻り値よりも優れている変数への戻り値を割り当てる:メソッドからの戻り値の場合は、最初にその値を変数に代入し、その変数が戻り値よりも優れているかどうかを返します。 ?我々は、メソッドから値を返す場合

public int getCustomerId(){ 
return CustomerService.getCustomerById(); 
} 

別の例:

public int getCustomerId(){ 
int id = CustomerService.getCustomberById(); 
return id; 
} 

私は友人のコードの1つを見て、まず変数に値を割り当ててから、その変数をサービスメソッドに返します。

+1

理論上、最初のバージョンは一時変数の定義を必要としないため、より効率的です。実際には、Javaコンパイラはおそらく最初のケースになるように2番目のケースを最適化します。 –

+0

理解しやすい方はどれですか?それはより良いものです。答えはすべてのケースで同じではないことに注意してください。 – ajb

+0

@ TimBiegeleisen、あなたは、それは私が2番目のバージョンを使用する場合は、それはJavaコンパイラのために最適化することができますか? – sawyinwaimon

答えて

0

どちらのアプローチも正しいです、それはすべて、私たちの関数に書いているコードの量、またはコードの読みやすさに依存しています。

それは一から二のライナーコードであれば、私は最初のアプローチのために行くだろう。

このように簡単ですが、読みやすさは問題ありません。

public int getCustomerId(){ 
    return CustomerService.getCustomerById(); 
} 

これはサービスコールだけで2つのステップを経なければならないため、コードの読みやすさが少し低下します。余分なデバッグ。

public int getCustomerId(){ 
    int id = CustomerService.getCustomberById(); 
    return id; 
} 

私は多分、ビジネス層で、を書かれたいくつかの複雑なロジック、multiple if-else, try-catchなどを持っている場合は、第二のアプローチが正常に見えます。

ただ、たとえば、それが意味

f(){ 

    Object obj = null; 

    try{ 
     if(condition){ 
      obj = // call service1 
     }else { 
      obj = // call service2 
     } 
    }catch(Exception e){ 
     } 
     return obj; 
} 

は、私は、(関数にローカルが)余計な変数を使用して、その後 割り当て、また、JVMにわずかなオーバーヘッドを追加しますが、コードの可読性 がすべきかもしれません同意しますコーディング中に考慮される。 JVMは、上で強調したようにコードを最適化するのに十分スマートです。

についてはlinksを参照してください。正確には関連していませんが、助けてください。

関連する問題