どちらのアプローチも正しいです、それはすべて、私たちの関数に書いているコードの量、またはコードの読みやすさに依存しています。
それは一から二のライナーコードであれば、私は最初のアプローチのために行くだろう。
このように簡単ですが、読みやすさは問題ありません。
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を参照してください。正確には関連していませんが、助けてください。
理論上、最初のバージョンは一時変数の定義を必要としないため、より効率的です。実際には、Javaコンパイラはおそらく最初のケースになるように2番目のケースを最適化します。 –
理解しやすい方はどれですか?それはより良いものです。答えはすべてのケースで同じではないことに注意してください。 – ajb
@ TimBiegeleisen、あなたは、それは私が2番目のバージョンを使用する場合は、それはJavaコンパイラのために最適化することができますか? – sawyinwaimon