4

次のコードを検討してください。

 public String foo(){
      String bar = doStuff();
      return bar;
 }

そして後で:

 public void test(){
      doSomeLogicHere();
      String result = foo();
 }

関数の最後にtest名前付きの文字列を取得することに注意してください。resultEclipse は、これが未使用の変数であることを認識しており、それについて警告します。私が疑問に思っているのは、これらの文字foo()列は、返された文字列を保存せずに呼び出しが行われたかのようにコンパイルされるのでしょうか? 使用していないときにコメントアウトしたString result =場合、メモリ消費を削減できますか、それとも文字列がまだ生成されて返されるので問題になりませんfoo()か?

このように書いているアプリケーションにデバッグ ロジックがいくつかあります。リリース用のすべての文字列をコメント アウトする価値があるかどうか、または使用していないときは疑問に思っています。

4

2 に答える 2

1

代入によってパフォーマンスに違いはresult生じません。JVM の Java JIT は、ほとんどの場合、これらの未使用の変数を最適化して取り除きます。

私は自分のコードをクリーンで警告のない状態に保つために、この種のものを個人的に修正しています。

于 2013-02-27T02:24:27.517 に答える
1

私の知る限り、コンパイラは未使用の変数を自動的に削除しません。これは通常、オプティマイザー/難読化担当者の仕事です。

たとえば、Android では、Androidアプリをリリース モードでビルドすると、ProGuardによって未使用の変数がすべて削除されます。

于 2013-02-27T02:20:08.460 に答える