Supponiamo che io abbia un oggetto personalizzato, Studente :
public class Student{
public int _id;
public String name;
public int age;
public float score;
}
E una classe, Finestra , che viene utilizzato per visualizzare le informazioni di uno Studente :
public class Window{
public void showInfo(Student student);
}
Sembra abbastanza normale, ma ho scoperto che Window non è abbastanza facile da testare individualmente, perché ha bisogno di un vero oggetto Student per chiamare la funzione. Quindi provo a modificare showInfo in modo che non accetti direttamente un oggetto Student :
public void showInfo(int _id, String name, int age, float score);
in modo che sia più semplice testare Window singolarmente:
showInfo(123, "abc", 45, 6.7);
Ma ho scoperto che la versione modificata presenta altri problemi:
Modifica Studente (ad esempio: aggiungi nuove proprietà) richiede la modifica della firma del metodo di showInfo
Se Student avesse molte proprietà, la firma del metodo di Student sarebbe molto lunga.
Quindi, usando oggetti personalizzati come parametro o accettando ogni proprietà negli oggetti come parametro, quale è più gestibile?
int
parametri. Dal sito di chiamata, non vi è alcuna verifica che tu li stia effettivamente passando nell'ordine giusto. Cosa succede se si scambia id
e age
, o firstName
e e lastName
? Stai introducendo un potenziale punto di errore che può essere molto difficile da rilevare fino a quando non ti esplode in faccia e lo stai aggiungendo in ogni sito di chiamata .
showForm(bool, bool, bool, bool, int)
metodo - Adoro quelli ...
showInfo
richiede una vera stringa, un vero float e due veri ints. In che modo fornire unString
oggetto reale è meglio che fornire unStudent
oggetto reale ?