インスタンス変数に直接アクセスするのではなく、クラスの内部コードでゲッター/セッターを使用するのは良いか悪いのですか?少なくともセッターの場合、値を検証するコードを追加することができますが、ゲッターにとってはオーバーヘッドです。 Javaコンパイラは、getter/setterが値を直接設定/取得するだけでJavaがコードを最適化し、getters/setterをインスタンス変数に直接アクセスすることで置き換えるので、オーバーヘッドを呼び出すメソッドはありません。クラス内のゲッター/セッターの使用 - 良いか悪いのか?
答えて
フィールドに直接アクセスする方が一般的です。 setFieldNameメソッドの値は、他のクラスでコードを使用しているプログラマにとってより明らかです。実装の詳細が隠されていると、受け入れ可能な値の範囲が分からないことがあるため、フィールドを非公開にして他の開発者にセッターを強制的に渡すように指示します。しかし、自分のクラスの中では、セッターを使用するケースははるかに弱いです。 Java APIのソースを見ると、getter/setterメソッドは一般にクラス内で使用されないことがわかります。
このトピックについて間違った答えはありませんが、私はJavaのapiの例が気に入っています。この答えを選択しました。これと他のものに感謝します! –
これらのゲッター/セッターで追加の操作を実行しない限り、クラス内で行う必要はありません。 としてクラスメンバへのアクセスは、内部クラスに直接することができ:隠れた理由は、実装を隠すために主にある
- (およびクラス自体から実装を隠す必要はありません)
- ゲッターとセッターはメンバーに直接アクセスするので、アクセスを避けるためにメンバーに直接呼び出すと、メンバーは直接、多少、冗長です...冗長です。パフォーマンスに関しては
- 私は正直にあなたがいないかどうかという点で、読みやすさ、拡張性やメンテナンスの面で、直接法またはアクセスを呼び出すかどうかを決定する必要があり、ほとんどの場合、あなたはそれについて考えるべきではないということだと思いますもう1秒かかりますか?このアプローチは長期的に実現します。最適化の場がありますが、コードベースが20行以上になると効率的ですが、コードを明確かつ維持可能に保つことがより重要になります。
直接アクセスするのは良いことです。しかし、同じクラスの中でゲッター/セッターアクセスが悪いと言う人はいません。 Java Beanを開発しているなら、私が何を言っているのかは間違いなく理解できます。 JTextFieldのユーザー入力をStringとして取得しようとしていると考えてください。この場合、getterメソッドは、文字列の切り捨て、トリム、大文字、小文字などを含むたくさんのことを可能にします。直接変数にアクセスするだけでこれをしようとしている場合(例:String s = textField.getText ())、それを行うことは非常に難しいでしょう。だから私が思うには、良いか悪いかは、状況やあなたが開発しているものによって決まります。
- 1. ゲッターセッターをモバイルアプリケーションに使用する方が良いですか?
- 2. ifステートメント内のifステートメントの使用、良いか悪い練習ですか?
- 3. グローバルデータフレーム - 良いか悪いか
- 4. Auto Mockingコンテナの使用は良いか悪いのですか?
- 5. 単一のWebアプリケーション用の複数のDbContextクラス。良いか悪いか?
- 6. 番号とクラスのID - 良いか悪いですか?
- 7. PHP MVCのBaseModel、良いか悪い?
- 8. MVCエンタープライズの分野 - 良いか悪い?
- 9. void *を使用したCのキュー実装 - 良いか悪いのか?
- 10. リポジトリパターン:良いか悪いですか?
- 11. C#String.IsNullOrEmpty:良いか悪いですか?
- 12. レジストリデザインパターン...良いか悪いですか?
- 13. 良いか悪いか、ブラウザの状態を使用してパラメータを渡すヒストリー
- 14. ストアドプロシージャで@@ identityを使用するのは良いか悪いですか?
- 15. クラス属性のデータを良いか悪いかで保存する
- 16. Solr同じマシン内の複数のノード - 良いか悪い考えですか?
- 17. C++メタテンプレート:良いデザインか悪いデザインか
- 18. symfonyコンテナをリポジトリ内に置くか、エンティティが良いか悪いのか?
- 19. C#でネストされた構造体が良いか悪いか
- 20. デリゲートとシングルトン:良いアイデアか悪い?
- 21. マスターインクルードファイル - 良いか悪い練習
- 22. DataContractJsonSerializerの静的インスタンス - 良いデザインか悪いデザインですか?
- 23. 春の注釈 - 良いか悪いですか?
- 24. ゲッターセッター内スウィフト3
- 25. 良いと悪いデータセットの比較Rを使用して
- 26. クラスの追加/削除/切り替え - 良い/悪い練習ですか?
- 27. データベースのアップアップ - 良いか悪い練習ですか?
- 28. IOバインドアプリケーションのマルチスレッド化:良いか悪いか
- 29. ビルド後のコミット:良いか悪いですか?
- 30. MongoDBとLinqの使用についてノルムの方が良いか悪いのですか?
可能な複製http://stackoverflow.com/questions/1568091/why-use-getters-and-setters –
あなたの質問の後半では、現代のJVMは必要に応じてgetters/setterをインライン展開します。 – casablanca
@edalorzo - これは重複していません。ここでの質問は、クラスメンバーの内部使用についてです。 – MByD