Studentというカスタムオブジェクトがあるとします。
public class Student{
public int _id;
public String name;
public int age;
public float score;
}
そして、生徒の情報を表示するために使用されるクラスWindow:
public class Window{
public void showInfo(Student student);
}
正常に見えますが、Windowを個別にテストするのは簡単ではありません。関数を呼び出すには、実際のStudentオブジェクトが必要だからです。そこで、Studentオブジェクトを直接受け入れないようにshowInfoを変更しようとしています。
public void showInfo(int _id, String name, int age, float score);
ウィンドウを個別にテストする方が簡単です:
showInfo(123, "abc", 45, 6.7);
しかし、修正版には別の問題があることがわかりました。
生徒の変更(例:新しいプロパティの追加)には、showInfoのメソッド署名を変更する必要があります
Studentに多くのプロパティがある場合、Studentのメソッド署名は非常に長くなります。
それでは、カスタムオブジェクトをパラメーターとして使用するか、オブジェクトの各プロパティをパラメーターとして受け入れますか?
int
パラメーターがあることです。呼び出しサイトから、実際に正しい順序でそれらを渡していることの確認はありません。id
and age
とor firstName
とand を入れ替えるとどうなりlastName
ますか?障害が発生する可能性のあるポイントを導入しており、それが顔に吹き飛ばされるまで検出するのは非常に困難な場合があり、すべてのコールサイトに追加します。
showForm(bool, bool, bool, bool, int)
方法-私はそれらを愛する...
showInfo
は、実際の文字列、実際のフロート、2つの実際の整数が必要です。実際のString
オブジェクトを提供するよりも、実際のオブジェクトを提供する方が優れているのStudent
でしょうか?