Saat membuat perpustakaan, haruskah saya memastikan bahwa metode pribadi harus bekerja seperti yang diharapkan ketika dipanggil bukan oleh metode lain dari kelas yang sama, tetapi oleh perpustakaan lain melalui refleksi ?
Misalnya, jika metode pribadi private DoSomething(int number)
mengharapkan bahwa:
number
adalah bilangan bulat nol-positif, dan:- variabel pribadi
string abc
bukan nol dan bukan string kosong,
dan sepenuhnya, jelek gagal jika kedua kondisi tidak cocok, haruskah saya menangani kegagalan itu bahkan jika saya tahu bahwa semua metode di kelas akan selalu¹ menetapkan nilai non-kosong abc
sebelum memanggil DoSomething
, dan memberikan bilangan bulat positif nol ke ini metode?
Dengan kata lain, apakah kode yang tidak dilindungi terhadap panggilan tidak aman melalui refleksi dapat dianggap sebagai kode berkualitas rendah , atau itu milik pemanggil yang menggunakan refleksi untuk memastikan bahwa panggilan itu tidak merusak apa pun?
Catatan: pertanyaan saya hanya mencakup satu set perpustakaan standar. Ini tidak mencakup kode yang harus sangat aman (yaitu ketika seseorang mungkin tertarik dengan menggunakan refleksi untuk membuatnya berperilaku tak terduga atau macet).
¹ Karena kelas didokumentasikan dengan benar, karena ada cukup unit test untuk memastikan bahwa pengembang lain tidak akan merusak metode ini, dll.