タグ付けされた質問 「final」

5
Javaでは、パラメータとローカルに「最終」を使用する必要はありますか?
Javaでは、変数(フィールド/ローカル/パラメーター)をとしてマークしてfinal、それらへの再割り当てを防ぐことができます。一部の属性(またはクラス全体)が不変であるべきかどうかをすばやく確認できるので、フィールドで非常に便利です。 一方、ローカルおよびパラメーターではあまり役に立たないことがわかり、通常final、それらが再割り当てされないようにマークすることは避けます(内部クラスで使用する必要がある場合は明らかな例外があります) 。しかし、最近では、できる限りfinalを使用するコードに出会いました。これは技術的に詳細な情報を提供していると思います。 プログラミングスタイルに自信がなくなったので、finalどこにでも適用することのその他の長所と短所は何か、最も一般的な業界スタイルは何か、そしてその理由は何だろう。
105 java  coding-style  final 

10
「final」キーワードが役立つのはなぜですか?
Javaには長い間派生できないクラスを宣言する力があったように思われますが、現在はC ++にもあります。しかし、SOLIDのOpen / Close原則に照らして、なぜそれが役立つのでしょうか?私には、finalキーワードのように聞こえますfriend-それは合法ですが、あなたがそれを使用している場合、ほとんどの場合、設計が間違っています。派生不可能なクラスが優れたアーキテクチャまたはデザインパターンの一部になるような例をいくつか提供してください。
54 java  c++  solid  final 

6
クラスで「最終」を使用することが本当に悪いのはなぜですか?
PHP OOPレガシーWebサイトをリファクタリングしています。 クラスの「最終」を「make it explicit that the class is currently not extended by anything」に使い始めたいと思います。クラスに行くと、これにより多くの時間を節約でき、protectedプロパティまたはメソッドの名前を変更/削除/変更できるかどうか疑問に思っています。クラスを本当に拡張したい場合は、最後のキーワードを削除して、拡張のためにロックを解除します。 すなわち、もし子クラスのないクラスに来たら、そのクラスを決勝にマークすることでその知識を記録することができます。次回、コードベースを再検索して、子があるかどうかを確認する必要はありません。したがって、リファクタリング中の時間を節約できます。 それはすべて賢明な時間節約のアイデアのように思えます...しかし、クラスはまれ/特別な場合にのみ「最終」にすべきであると読んでいます。 Mockオブジェクトの作成を台無しにしたり、私が考えていない他の副作用があるかもしれません。 私は何が欠けていますか?

2
命名規則:最終フィールド(静的ではない)
今日はfinal、Javaクラスのフィールドの命名について同僚と話し合いました。 彼の意見finalでは、フィールドはインスタンスの作成後に値が変化しないため、定数と見なされる必要があります。 これにより、finalフィールドに次の命名規則が適用されます。 public class Foo { private static final String BLA_BLA = "bla"; private final String BAR_BATZ; ... } 私の意見では、static finalフィールドのみが定数と見なされるべきですが、フィールドfinalは通常のcamelCase命名規則に従うべきです。 public class Foo { private static final String BLA = "bla"; private final String barBatz; ... } 彼は私よりもはるかに経験豊富なプログラマーであり、私は彼の意見に同意し、彼を非常に優れた開発者と見なしているため、今は少し不確かです。 これに関する入力はありますか?
23 java  naming  final 

5
業界で「最終」キーワードがほとんど使用されないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 final数年前にJavaでキーワードのパワーを発見したので、読み取り専用の変数を簡単に確認できるため、コードをより読みやすくするのに役立ちました。また、JITを少し強化することもありますが、これは非常に限定的なものですが、特にAndroidプラットフォームなどの組み込みデバイスを対象とする場合は害はありません。 しかし、何よりも、変更に対する設計の堅牢性を高め、コードベースを変更する必要がある場合に他のコミッターを導くことに貢献します。 ただし、JDKソースコードの一部を参照しているときに、クラス、メソッド、または変数のいずれについても、このキーワードにつまずくことはありませんでした。私がレビューしなければならなかったさまざまなシステムにも同じことが当てはまります。 理由はありますか?内部からすべてを可変にするのは一般的な設計パラダイムですか?
14 java  final 

3
C ++では、仮想メソッド宣言でfinalをいつ使用すればよいですか?
final仮想メソッドが派生クラスによってオーバーライドされるのを防ぐためにキーワードが使用されていることを知っています。ただし、メソッドでキーワードを実際に使用する必要がある場合に役立つ例はありません。さらに、仮想メソッドでの使用は、プログラマが将来クラスを拡張することを許可しないため、悪臭のように感じられます。finalvirtualfinal 私の質問は次です: メソッド宣言finalで実際に使用する必要がある有用なケースはありますvirtualか?
11 c++  final 

2
なぜStringを(finalとして)宣言してから使用するのですか?
典型的なSpring MVCバリデータークラスでは、ErrorsオブジェクトにerrorCode値を挿入するときに、文字列(props.somefield.req)を使用した場合との違いは何ですか? errors.rejectValue("elementId", "props.somefield.req"); 宣言された静的な最後の文字列と対になる? private static final String SOMFIELD_REQ = "props.somefield.req"; ... errors.rejectValue("elementId", SOMFIELD_REQ); 少しでもパフォーマンスは向上しますか?スタックオーバーフローに関するいくつかの質問(Stringとfinal、Javaでfinal Stringを定義することは理にかなっていますか)を読みましたが、この質問の更新の質問に答えることはできませんでした。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.