OpenJDK、Hibernate、ApacheのJavaソースコードを見ると、finalと宣言されたローカル変数はまだありません。
これは、最も広く使用されているJavaソフトウェアライブラリの開発者が次のことを示唆しています。
最後のキーワードが読みやすさを向上させるとは思わないでください。
パフォーマンスが大幅に向上するとは思わないでください。
stackoverflowの寄稿者の大多数が、(最も投票数の多い回答に基づいて)使用する必要があると考えているのはなぜですか?
OpenJDK、Hibernate、ApacheのJavaソースコードを見ると、finalと宣言されたローカル変数はまだありません。
これは、最も広く使用されているJavaソフトウェアライブラリの開発者が次のことを示唆しています。
最後のキーワードが読みやすさを向上させるとは思わないでください。
パフォーマンスが大幅に向上するとは思わないでください。
stackoverflowの寄稿者の大多数が、(最も投票数の多い回答に基づいて)使用する必要があると考えているのはなぜですか?
おそらく単語に5つの長い文字を入力するのは面倒だからfinal
です...なぜ彼らは書くの苦痛を経験するのでしょうか
final int x;
タイピングが2倍になると
int x;
?
私たち開発者は怠け者です、あなたは知っています...:P
最後のキーワードが読みやすさを向上させるとは思わないでください。
一部の人々(私など)は、過度final
のsが読みやすさを低下させることに気づきます。
パフォーマンスが大幅に向上するとは思わないでください。
final
ローカル変数はパフォーマンスを向上させません。
私の知る限り、finalキーワードは変数の実行時のパフォーマンスに影響を与えません。
主な目的は、バグの発見を支援することだと思います。何かが決して変わらないことがわかっている場合は、そのようにマークします。可能な場合にアノテーションを使用する理由と同様に、ランタイムバグをコンパイル時エラーと交換できる場合はいつでも使用します。あなたがそれに取り組んでいるときにエラーを見つけること、そしてそれはあなたの心の中で新鮮です、そしてそれはあなたが顧客を失う原因となる誰かのデータを失って破壊していません、ええ、それは非常に良いことです。コンパイルエラーが発生し、修正し、先に進み、ナイトリービルドを中断しません。そう、それらは良いことです。
最後のキーワードには2つの用途があります。
ケース2は通常、オブジェクトを(少なくとも部分的に)不変にするためにメンバー変数に適用されるか、偶発的な割り当てを防ぐためにメソッドパラメーターに適用されます。
ローカル変数(つまり、パラメーターではなくメソッドスコープ)の場合、これらの変数はメソッド内で変更される可能性が高いため、通常は必要ありません(そうでない場合は、メソッドスコープの参照をキャッシュする場合を除いて必要ない場合があります)。 )。
ローカル変数を宣言することfinal
でパフォーマンスが向上することはないと思います。が存在するためfinal
、Javaコンパイラは、変数が複数回割り当てられているのか、初期化されていないのかを判断できる必要があります。したがって、実際にローカルを宣言final
することは、コンパイラにまだ知らないことを何も伝えません。これは、読者の利益のためだけです。
今、それが時々読みやすさを改善するかどうか、それはより主観的です。複雑なコードでは、変数が1回だけ書き込まれることを(自分自身または将来の読者に)約束するのがよい場合があります。しかし、とにかくすぐにわかるように、コードを単純化する方が良いかもしれません。