Misalkan saya memiliki objek khusus, Siswa :
public class Student{
public int _id;
public String name;
public int age;
public float score;
}
Dan kelas, Window , yang digunakan untuk menampilkan informasi seorang Siswa :
public class Window{
public void showInfo(Student student);
}
Kelihatannya cukup normal, tetapi saya mendapati Window tidak cukup mudah untuk diuji secara individual, karena dibutuhkan objek Student yang sebenarnya untuk memanggil fungsi tersebut. Jadi saya mencoba untuk memodifikasi showInfo sehingga tidak menerima objek Siswa secara langsung:
public void showInfo(int _id, String name, int age, float score);
sehingga lebih mudah untuk menguji Window secara individual:
showInfo(123, "abc", 45, 6.7);
Tetapi saya menemukan versi yang dimodifikasi memiliki masalah lain:
Ubah Siswa (misalnya: tambahkan properti baru) memerlukan modifikasi metode-tanda tangan showInfo
Jika Siswa memiliki banyak properti, metode-tanda tangan Siswa akan sangat panjang.
Jadi, menggunakan objek khusus sebagai parameter atau menerima setiap properti dalam objek sebagai parameter, mana yang lebih bisa dipertahankan?
int
parameter. Dari situs panggilan, tidak ada verifikasi bahwa Anda benar-benar melewati mereka dalam urutan yang benar. Bagaimana jika Anda bertukar id
dan age
, atau firstName
dan lastName
? Anda memperkenalkan titik kegagalan potensial yang bisa sangat sulit dideteksi hingga meledak di wajah Anda, dan Anda menambahkannya di setiap situs panggilan .
showForm(bool, bool, bool, bool, int)
metode lama - Saya suka itu ...
showInfo
membutuhkan String nyata, float nyata dan dua int nyata. Bagaimana menyediakanString
objek nyata lebih baik daripada menyediakanStudent
objek nyata ?