假设我有一个自定义对象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对象来调用该函数。因此,我尝试修改showInfo,使其不直接接受Student对象:
public void showInfo(int _id, String name, int age, float score);
以便更轻松地单独测试Window:
showInfo(123, "abc", 45, 6.7);
但是我发现修改后的版本还有另一个问题:
修改学生(例如:添加新属性)需要修改showInfo的方法签名
如果Student具有许多属性,则Student的方法签名将非常长。
因此,使用自定义对象作为参数或接受对象中的每个属性作为参数,哪个更可维护?
int
参数。在呼叫站点,无法验证您是否确实以正确的顺序传递了它们。如果换成什么id
和age
,或firstName
和lastName
?您将要引入一个潜在的故障点,直到它在您的脸上炸开,否则很难发现,并且将其添加到每个呼叫站点。
showForm(bool, bool, bool, bool, int)
方法-我喜欢那些...
showInfo
需要一个真实的字符串,一个真实的浮点数和两个真实的整数。提供真实String
物体比提供真实物体更好Student
吗?