Предположим, у меня есть пользовательский объект, студент :
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объект?