Suponha que eu tenha um objeto personalizado, Student :
public class Student{
public int _id;
public String name;
public int age;
public float score;
}
E uma classe, Window , usada para mostrar informações de um Aluno :
public class Window{
public void showInfo(Student student);
}
Parece bastante normal, mas achei que o Window não é muito fácil de testar individualmente, porque ele precisa de um objeto Student real para chamar a função. Então, eu tento modificar showInfo para que ele não aceite um objeto Student diretamente:
public void showInfo(int _id, String name, int age, float score);
para que seja mais fácil testar o Window individualmente:
showInfo(123, "abc", 45, 6.7);
Mas eu achei que a versão modificada tem outros problemas:
Modificar Aluno (por exemplo: adicionar novas propriedades) requer a modificação da assinatura do método showInfo
Se o Student tivesse muitas propriedades, a assinatura do método seria muito longa.
Então, usando objetos personalizados como parâmetro ou aceite cada propriedade em objetos como parâmetro, qual é mais sustentável?
int
parâmetros. No site de chamada, não há confirmação de que você está passando na ordem correta. E se você trocar id
e age
, ou firstName
e lastName
? Você está apresentando um ponto potencial de falha que pode ser muito difícil de detectar até que exploda na sua cara e você o adiciona em todos os sites de chamadas .
showForm(bool, bool, bool, bool, int)
método - Eu amo aqueles ...
showInfo
requer uma String real, um float real e duas entradas reais. Como é fornecer umString
objeto real melhor do que fornecer umStudent
objeto real ?