プロパティに言及しているということは、なんらかのレシーバ・インスタンスのあるメソッド(所謂staticではない)についての話だと思うのですが
そうすると、インスタンスを生成し、コンストラクタや設定用メソッドを呼び出しインスタンスを初期化/変更して、その後インスタンスに対して、目的の処理を行うための(場合によっては繰り返してや複数の)メソッドを呼ぶことになります。
この際、一連の/繰り返しの処理を通じて同一の値であるべきようなものは、インスタンスの設定/状態としてプロパティなどで実現するべきです。
そうではなく、たまたま複数の処理で同じ値を使っているだけのものであれば、一般的には引数で呼び出しごとに渡します。
また、引数の使いまわしが多いが状態として持たせるべきでない…という場合は引数用クラスの導入なども検討します。
(全体的に引数オブジェクトとしたり、一部だけをオプション引数として使いまわしたりなど)
2024/06/19 追記
おおよそ同じような認識
とコメントで言われていますが、こちらの意図と食い違っていたので補足しておきます。
質問としては「プロパティだと使いまわせて呼び出し側が楽」という方針だと思われます。
回答としては「正しいかどうかで使い分けるべき」という別の方針で
- 一連の処理を通じて同一の値であるべきならプロパティなどで実現するべき
- たまたま同じ値ならば全て引数で
と回答しています。
(この辺りは私の回答が言葉不足だったかもしれません)
「楽かどうか」という判断基準は、実際のところ「呼び出し側のコード」に依存してそのたびに結果が変わる可能性があります。
1回しか呼び出ししないものは全て引数でよいですし、複数回の呼び出しがあれば「たまたま同じ箇所」を共通化したくなります。
ですが、常に「正しいかどうか」で判断するとなると
例え1回しか呼び出ししないものであっても、「どうあるべきか」で考えて結果的にプロパティにする場合もありえます。
そうすると1回しか呼び出さないにも関わらずわざわざコンストラクタやsetterを用いるものと引数で渡すものを分けるため、
むしろ呼び出し側やテストが煩雑になることすらありえます。
(私はどちらかといえば、そちらの方が望ましいと考えています)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/06/16 10:33
2024/06/18 16:25
2024/06/18 17:29