ここから本文です

メソッドの引数って使わない方がいいでしょうか?

アバター

ID非公開さん

2020/2/1511:19:36

メソッドの引数って使わない方がいいでしょうか?

コンストラクタで予めデータを渡しておいて、各メソッドではそのデータを参照するということができると思います。
そう考えたらメソッドの引数なんて使う必要ないかなと思ってしまいます。
一時的な値や処理を分けるためのフラグを渡すのには引数の方が使い捨てできて良いのでしょうか?

閲覧数:
48
回答数:
5
お礼:
50枚

違反報告

回答

1〜5件/5件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

pri********さん

2020/2/1519:30:37

イミュータブルにすると安全性は高まりますが、コンストラクターの引数が多いので、ビルダーを用意してコーディングしやすく工夫します。

ですが仕事が多過ぎるクラスもメンテナンスしづらいです。
3000行あって、100個ぐらいメソッドを持つクラスって嫌でしょ。

オブジェクトの関係性は、ほんと色々と表現出来ますから、自由に考えて良いと思います。というか、自由に考えないと、そこで思考停止しちゃうから、固定観念にならないようにしましょう。

ara********さん

2020/2/1516:04:24

>コンストラクタで予めデータを渡しておいて、各メソッドではそのデータを参照するということができると思います。
>そう考えたらメソッドの引数なんて使う必要ないかなと思ってしまいます。

これの逆の究極は静的クラスです。インスタンス化できない、staticメソッドだけを提供するクラスです。
たとえば数学関数をまとめたMathクラス。平方根、べき乗、三角関数、絶対値、対数、etc... 数学の関数は引数が全てであって、Mathクラスにコンストラクタがあったとしても何もすることがありません。

e00********さん

2020/2/1514:39:41

流儀は人それぞれ、好きな方法で作ったらいいと思います。

プロフィール画像

カテゴリマスター

nan********さん

2020/2/1512:05:13

一般的な話ですが、コンストラクタに渡す値はそのクラスの初期化パラメータです。つまり、大抵は一旦設定されたら変更されない値です。
逆に言えば、そのような性格の値ならコンストラクタに渡すのが正解です。

ですが、メソッドを呼ぶタイミングで渡す値によって処理結果が変わるようなものなら、当然メソッドを呼ぶタイミングでしか渡せません。

ikt********さん

2020/2/1511:33:34

並列に並べて比べて どっちがいい というものじゃないですよ。(^_^;)

それに
> 引数の方が使い捨てできて...
の「使い捨て」っていうのは、いったいどんなイメージで
おっしゃってるんだろう? と、想像できない。

Stringクラスのメソッド、たとえば #substring
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#...

Listのメソッド、たとえば #get
https://docs.oracle.com/javase/jp/8/docs/api/java/util/List.html#ge...

これらの 引数 を、ナシにして、コンストラクタ引数 で
代替すること、できますか?


オブジェクトには、寿命 があります。
new で生まれて、用済みになってガベコレで消えていくまで。
その寿命区間全域で 記憶保持しつづけといてほしい という
期待の属性ならばコンストラクタ引数でその 初期状態 を指定する。

そうじゃなくて、個々のメソッド毎に指示できればよい
話ならメソッドの引数。

どっちか片方しか使えないんじゃ、困ります。

  • ikt********さん

    2020/2/1511:36:25

    質問文からは不明瞭ですけど、
    ・インスタンス変数(クラスのメンバ変数)にするもの限定
    での質問だ(実は)、という話なら、
    最初にそう明記してほしい。

  • その他の返信(5件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる