Załóżmy, że mam niestandardowy obiekt, Student :
public class Student{
public int _id;
public String name;
public int age;
public float score;
}
Oraz klasa Window , która służy do wyświetlania informacji o Uczniu :
public class Window{
public void showInfo(Student student);
}
Wygląda całkiem normalnie, ale stwierdziłem, że Window nie jest dość łatwy do przetestowania indywidualnie, ponieważ do wywołania funkcji potrzebny jest prawdziwy obiekt Studenta . Próbuję więc zmodyfikować showInfo, aby nie akceptował bezpośrednio obiektu Studenta :
public void showInfo(int _id, String name, int age, float score);
aby łatwiej było testować Window indywidualnie:
showInfo(123, "abc", 45, 6.7);
Ale odkryłem, że zmodyfikowana wersja ma inne problemy:
Zmodyfikuj ucznia (np .: dodaj nowe właściwości) wymaga zmodyfikowania podpisu metody showInfo
Gdyby Student miał wiele właściwości, sygnatura metody Studenta byłaby bardzo długa.
Tak więc, używając niestandardowych obiektów jako parametru lub przyjmując każdą właściwość w obiektach jako parametr, która z nich jest łatwiejsza do utrzymania?
int
parametry. W witrynie połączeń nie ma weryfikacji, czy faktycznie przekazujesz je w odpowiedniej kolejności. Co jeśli zamienisz id
i age
, lub firstName
i lastName
? Wprowadzasz potencjalny punkt awarii, który może być bardzo trudny do wykrycia, dopóki nie pojawi się na twojej twarzy, i dodajesz go na każdej stronie połączeń .
showForm(bool, bool, bool, bool, int)
metoda - Kocham tych ...
showInfo
wymaga prawdziwego Stringa, prawdziwego float i dwóch prawdziwych int. W jaki sposób dostarczanie prawdziwegoString
obiektu jest lepsze niż dostarczanie prawdziwegoStudent
obiektu?