Предположим, у меня есть пользовательский объект, студент :
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
нужна настоящая строка, реальный float и два настоящих целых. Как обеспечить реальныйString
объект лучше, чем реальныйStudent
объект?