6

OpenJDK、Hibernate、ApacheのJavaソースコードを見ると、finalと宣言されたローカル変数はまだありません。

これは、最も広く使用されているJavaソフトウェアライブラリの開発者が次のことを示唆しています。

  • 最後のキーワードが読みやすさを向上させるとは思わないでください。

  • パフォーマンスが大幅に向上するとは思わないでください。

stackoverflowの寄稿者の大多数が、(最も投票数の多い回答に基づいて)使用する必要があると考えているのはなぜですか?

4

5 に答える 5

5

おそらく単語に5つの長い文字を入力するのは面倒だからfinalです...なぜ彼らは書くの苦痛を経験するのでしょうか

final int x;

タイピングが2倍になると

int x;

私たち開発者は怠け者です、あなたは知っています...:P

于 2011-04-06T21:54:12.057 に答える
4

最後のキーワードが読みやすさを向上させるとは思わないでください。

一部の人々(私など)は、過度finalのsが読みやすさを低下させることに気づきます。

パフォーマンスが大幅に向上するとは思わないでください。

finalローカル変数はパフォーマンスを向上させません。

于 2011-04-07T00:22:38.027 に答える
3

私の知る限り、finalキーワードは変数の実行時のパフォーマンスに影響を与えません。

主な目的は、バグの発見を支援することだと思います。何かが決して変わらないことがわかっている場合は、そのようにマークします。可能な場合にアノテーションを使用する理由と同様に、ランタイムバグをコンパイル時エラーと交換できる場合はいつでも使用します。あなたがそれに取り組んでいるときにエラーを見つけること、そしてそれはあなたの心の中で新鮮です、そしてそれはあなたが顧客を失う原因となる誰かのデータを失って破壊していません、ええ、それは非常に良いことです。コンパイルエラーが発生し、修正し、先に進み、ナイトリービルドを中断しません。そう、それらは良いことです。

于 2011-04-06T22:00:53.283 に答える
2

最後のキーワードには2つの用途があります。

  1. サブクラス化/オーバーライドを防ぐために、クラスまたはメソッドをfinalとして宣言します
  2. 変数の変更(新しい値の割り当て)を防ぐために、変数をfinalとして宣言します

ケース2は通常、オブジェクトを(少なくとも部分的に)不変にするためにメンバー変数に適用されるか、偶発的な割り当てを防ぐためにメソッドパラメーターに適用されます。

ローカル変数(つまり、パラメーターではなくメソッドスコープ)の場合、これらの変数はメソッド内で変更される可能性が高いため、通常は必要ありません(そうでない場合は、メソッドスコープの参照をキャッシュする場合を除いて必要ない場合があります)。 )。

于 2011-04-06T21:56:45.383 に答える
2

ローカル変数を宣言することfinalでパフォーマンスが向上することはないと思います。が存在するためfinal、Javaコンパイラは、変数が複数回割り当てられているのか、初期化されていないのかを判断できる必要があります。したがって、実際にローカルを宣言finalすることは、コンパイラにまだ知らないことを何も伝えません。これは、読者の利益のためだけです。

今、それが時々読みやすさを改善するかどうか、それはより主観的です。複雑なコードでは、変数が1回だけ書き込まれることを(自分自身または将来の読者に)約束するのがよい場合があります。しかし、とにかくすぐにわかるように、コードを単純化する方が良いかもしれません。

于 2011-04-06T21:58:26.143 に答える