[解決済み] オブジェクトのインスタンス変数を使用する場合と、メソッドに引数を渡す場合の違い
質問
メソッドに引数を渡すか、単にオブジェクトのインスタンス変数として宣言し、オブジェクトのすべてのメソッドから見えるようにするか、どのように判断しますか。
私はインスタンス変数をクラスの末尾のリストに保持することを好みますが、このリストは私のプログラムが成長するにつれて長くなります。変数が十分に頻繁に渡される場合、それを必要とするすべてのメソッドに表示されるべきだと考えますが、その後、quot;すべてが公開されている場合、何かを渡す必要はまったくないだろう、と考えます!
どのように解決するのですか?
インスタンス変数に言及しているということは、オブジェクト指向の言語で作業しているのでしょう。インスタンス変数をいつ使うか、そのスコープをどう定義するか、ローカル変数をいつ使うかはある程度主観的ですが、クラスを作成するときに従うことができる経験則がいくつかあります。
-
インスタンス変数は、通常、クラスの属性とみなされます。 これらは、あなたのクラスから作成されるオブジェクトの形容詞であると考えましょう。インスタンスデータがオブジェクトの説明に役立つのであれば、それはインスタンスデータとして良い選択であると言ってもよいかもしれません。
-
ローカル変数は、メソッドが作業を完了するのを助けるために、メソッドの範囲内で使用されます。 通常、メソッドはあるデータを取得し、あるデータを返し、そして/またはあるデータでアルゴリズムを処理/実行するという目的を持っているはずです。時には、ローカル変数を、メソッドが最初から最後まで到達するのを助ける方法として考えるのに役立ちます。
-
インスタンス変数のスコープは、セキュリティのためだけでなく、カプセル化のためでもあります。 継承の場合、変数をprotectedにすることは通常良い代替案です。すべてのインスタンスデータをpublicにするのではなく、外部にアクセスする必要があるものにはゲッター/セッターを作成します。すべてのデータを公開するのではなく、必要なものだけを公開します。これは開発ライフサイクルを通じて行われます。
クラスの周りでデータを渡すことになると、いくつかのコードを見ることなく、あなたがやっていることが良い習慣であると言うのは難しいです。インスタンスデータを直接操作することが良い場合もあれば、そうでない場合もあります。これは経験によって得られるもので、オブジェクト指向の思考スキルが向上するにつれて、直感が身につくと私は考えています。
関連
-
[解決済み] JavaScriptのオブジェクトリテラルで変数をキーとして使用するには?
-
[解決済み】既存のオブジェクトインスタンスにメソッドを追加する
-
[解決済み】Javaでfinalize()メソッドが呼ばれるのはいつ?
-
[解決済み】C#の変数名における@の使い方・意味は?
-
[解決済み】ローカル変数の初回使用後に再代入すると、UnboundLocalErrorが発生する。
-
[解決済み] 変数の宣言とそれを同じOracle SQLスクリプトで使用する方法は?
-
[解決済み] 未束縛のメソッド f() は fibo_ インスタンスを第一引数として呼び出す必要がある (代わりに classobj インスタンスを取得)
-
[解決済み] Pythonで、メソッドの代わりに関数を使用するのはどんな場合ですか?
-
[解決済み] の左辺に新しい変数がない。
-
[解決済み] Go宣言の"_,"(アンダースコア・カンマ)とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン