1

Stringオブジェクトなどのオブジェクトを返すメソッドがあります。

今、私は2つの可能性を持っています

public String someMethod(){

String data=getData(); //This method returns string

return data;
}

また

public String someMethod(){

return getData();//This method returns string

}

上記のどれがより良いプラクティスであり、パフォーマンス/スケーラビリティを考慮するとより良いものです. 回答を裏付ける見解をお聞かせください。御時間ありがとうございます。

4

9 に答える 9

4

変数を変更しない場合は、変数を返すためだけに変数のローカル コピーを作成する必要はありません。

コードの 2 番目のバージョンは、よりクリーンで簡潔であり、通常好まれます。

最適化されたコンパイラは、パフォーマンスが同等ではない場合、おそらく変換を行います。

于 2012-04-26T15:20:35.200 に答える
1

他のプログラミング言語と同様に、できるだけ簡潔かつ明確に表現する必要があります。どちらもまったく同じものにコンパイルされますが、後者の方がはるかに読みやすく、不要なコード行が省略されています。

于 2012-04-26T15:20:56.927 に答える
1

コンパイラは 2 番目を最初に変換するため、最適化されると思います。すべての場合にそうなるわけではありませんが、ほとんどの場合はそうなるでしょう。しかし、それはすべて読みやすさに依存します。あなたがより速く捕まえることができるものは何でも、私はそれに固執すると言います. しかし、どちらも同じです。その文字列へのポインタの変数を作成している最初のものだけが異なるため、不要なメモリが「浪費」されます。ただし、その場合も、コンパイラはおそらくそれを最適化します。

于 2012-04-26T15:21:55.863 に答える
1

これは、ほぼ完全にスタイルに帰着します (最初のものはくだらないスタイルです。使用しないものを作成しないでください)。優れたコンパイラは、未使用のローカル変数を削除することで、ここでいくつかの最適化を行う必要があることに気付くでしょう。「最適化」と見なされる小さな調整を行うことに夢中になるのは本当に簡単ですが、実際には、開発者が賢いと感じて時間を浪費するための試みにすぎません。コンパイラが最初のコード セグメントを 2 番目のコード セグメントに最適化しなかったとしても (実際にはさらに最適化される可能性があります)。

パフォーマンスに関して言えば、未使用の割り当て/割り当て操作ではなく、全体像のアーキテクチャの決定が実際に違いを生むものです。行ごとの最適化に行き詰まらないでください。おそらく、これらの最適化はコンパイラーに任せたほうがよいでしょう。

于 2012-04-26T15:22:24.540 に答える
0

2番目のソリューションの場合は+1。あなたが書くことが少ないほど、あなたはより良く成長します!

于 2012-04-26T15:23:03.287 に答える
0

1firstつ:

きちんとしたわかりやすいコードを書くという点では優れていますがmemory、Sring オブジェクトの初期化に多くを使用しfirstます。彼はdebugそれがより良い必要があります。
コード管理に適しています。

1secondつ:

performance追加のオブジェクトの初期化がなく、必要な戻りデータを出力するだけの場合に適しています。しかし、コードを書くという点では良い習慣ではありませんが、コードを書く際のパフォーマンスと素早さという点では良い方法です。

于 2012-04-26T15:23:51.627 に答える
0

最初のものは、考えられる例外を学習してデバッグするためだけに、より直感的になる可能性があります(大学では、その理由が示されています。これがあなたがこれについて疑う理由だと思います)が、一般的には2番目の方が好まれ、より優れています。

于 2012-04-26T15:24:32.430 に答える
0

2 番目のオプションの方が適しています。最初のものでは、変数データは実際の目的を果たしません。とにかく、これがコンパイルされると、コンパイラはとにかく1番目のものを2番目のものに変更すると思います。

于 2012-04-26T15:20:42.807 に答える
0

2 番目の方法は、タイピングが少なくて済み、不要なコードが削減されるため、より適切なオプションです。コードをできるだけ読みやすくするよう常に心がけてください。

于 2012-04-26T15:21:27.173 に答える