Supposons que j'ai un objet personnalisé, étudiant :
public class Student{
public int _id;
public String name;
public int age;
public float score;
}
Et une classe, Window , utilisée pour afficher les informations d'un étudiant :
public class Window{
public void showInfo(Student student);
}
Cela semble assez normal, mais j’ai trouvé que Window n’était pas assez facile à tester individuellement, car il avait besoin d’un véritable objet Student pour appeler la fonction. J'essaie donc de modifier showInfo pour qu'il n'accepte pas d' objet Student directement:
public void showInfo(int _id, String name, int age, float score);
pour qu'il soit plus facile de tester Windows individuellement:
showInfo(123, "abc", 45, 6.7);
Mais j'ai trouvé que la version modifiée posait un autre problème:
Modifier un étudiant (par exemple: ajouter de nouvelles propriétés) nécessite de modifier la signature de méthode de showInfo
Si Student avait plusieurs propriétés, la méthode-signature de Student serait très longue.
Donc, en utilisant des objets personnalisés en tant que paramètre ou en acceptant chaque propriété d'objets en paramètre, laquelle est la plus facile à gérer?
int
paramètres. Sur le site de l'appel, il n'est pas vérifié que vous les transmettez dans le bon ordre. Et si vous échangez id
et age
, ou firstName
et lastName
? Vous introduisez un point d'échec potentiel qui peut être très difficile à détecter jusqu'à ce qu'il explose, et vous l'ajoutez à chaque site d'appel .
showForm(bool, bool, bool, bool, int)
méthode - j'adore ceux-ci ...
showInfo
nécessite une vraie chaîne, un vrai float et deux vrais ints. En quoi la fourniture d'unString
objet réel est-elle meilleure que celle d'unStudent
objet réel ?