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?
intparamè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 idet age, ou firstNameet 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 ...
showInfonécessite une vraie chaîne, un vrai float et deux vrais ints. En quoi la fourniture d'unStringobjet réel est-elle meilleure que celle d'unStudentobjet réel ?