1. ホーム
  2. variables

[解決済み] オブジェクトのインスタンス変数を使用する場合と、メソッドに引数を渡す場合の違い

2022-12-06 15:27:10

質問

メソッドに引数を渡すか、単にオブジェクトのインスタンス変数として宣言し、オブジェクトのすべてのメソッドから見えるようにするか、どのように判断しますか。

私はインスタンス変数をクラスの末尾のリストに保持することを好みますが、このリストは私のプログラムが成長するにつれて長くなります。変数が十分に頻繁に渡される場合、それを必要とするすべてのメソッドに表示されるべきだと考えますが、その後、quot;すべてが公開されている場合、何かを渡す必要はまったくないだろう、と考えます!

どのように解決するのですか?

インスタンス変数に言及しているということは、オブジェクト指向の言語で作業しているのでしょう。インスタンス変数をいつ使うか、そのスコープをどう定義するか、ローカル変数をいつ使うかはある程度主観的ですが、クラスを作成するときに従うことができる経験則がいくつかあります。

  • インスタンス変数は、通常、クラスの属性とみなされます。 これらは、あなたのクラスから作成されるオブジェクトの形容詞であると考えましょう。インスタンスデータがオブジェクトの説明に役立つのであれば、それはインスタンスデータとして良い選択であると言ってもよいかもしれません。

  • ローカル変数は、メソッドが作業を完了するのを助けるために、メソッドの範囲内で使用されます。 通常、メソッドはあるデータを取得し、あるデータを返し、そして/またはあるデータでアルゴリズムを処理/実行するという目的を持っているはずです。時には、ローカル変数を、メソッドが最初から最後まで到達するのを助ける方法として考えるのに役立ちます。

  • インスタンス変数のスコープは、セキュリティのためだけでなく、カプセル化のためでもあります。 継承の場合、変数をprotectedにすることは通常良い代替案です。すべてのインスタンスデータをpublicにするのではなく、外部にアクセスする必要があるものにはゲッター/セッターを作成します。すべてのデータを公開するのではなく、必要なものだけを公開します。これは開発ライフサイクルを通じて行われます。

クラスの周りでデータを渡すことになると、いくつかのコードを見ることなく、あなたがやっていることが良い習慣であると言うのは難しいです。インスタンスデータを直接操作することが良い場合もあれば、そうでない場合もあります。これは経験によって得られるもので、オブジェクト指向の思考スキルが向上するにつれて、直感が身につくと私は考えています。