Saya akan menjadi defensif seperti yang Anda inginkan. Agak ambigu, saya kira begitu tapi saya akan coba jelaskan.
Ketika Anda benar metode, jika metode itu memiliki parameter input Anda harus membuat keputusan tentang apa yang Anda harapkan menjadi parameter. Dalam situasi dan tempat dalam suatu aplikasi, ini akan berbeda. Misalnya, jika metode atau bagian kode menerima data dari input pengguna maka Anda ingin mencakup semua basis kode dan menangani input apa pun yang sesuai apakah melalui pesan kesalahan atau cara yang bagus untuk menampilkan data yang tidak dapat diterima.
Jika metodenya adalah API terbuka, terbuka. Anda tidak dapat mengontrol apa yang masuk sehingga Anda harus berharap untuk mencoba dan mencakup semua aspek dan program yang sesuai.
Untuk metode yang dihasilkan dalam mesin inti proyek Anda, di sini Anda harus membuat keputusan. Apakah saya berasumsi bahwa data yang tiba telah disaring dan divalidasi sebelum tiba atau haruskah saya memasukkan cek yang diperlukan. Saya kira ini tergantung pada tingkat konseptual metode dan apakah ini merupakan tempat yang dapat diterima untuk memeriksa. Jadi hal yang mungkin saya pertimbangkan adalah:
1) Apakah ini satu-satunya tempat saya perlu melakukan pemeriksaan ini? Apakah variabel ini perlu diperiksa di banyak tempat yang berbeda untuk kondisi ini. Jika demikian dapat saya lakukan pemeriksaan sekali lebih tinggi dari rantai dan kemudian menerima validitas sesudahnya
2) Apakah komponen lain dari sistem diharapkan bekerja dengan metode dan antarmuka yang saya tulis. Jika demikian, Anda dapat mengontrol melalui pernyataan penegasan debug, pengecualian debugging, komentar metode dan arsitektur sistem umum hasil yang Anda butuhkan, atau akankah data tersebut perlu dicek.
3) Apa hasil dari kegagalan pada titik ini dalam kode. Apakah ini akan menyebabkan semuanya gagal? Apakah ada kesalahan yang ditangkap di tempat lain dan setidaknya kesalahan itu akan tertangkap.
4) Apakah masuk akal untuk memberi tanda centang di sini? Kadang-kadang memberi tanda centang pada kemungkinan data yang korup meskipun membantu menyelesaikan masalah pada saat itu dan tidak membuat kesalahan bisa membantu menutupinya. Pada titik mana Anda mungkin menghabiskan berjam-jam mengejar masalah yang berbeda hanya untuk menemukan masalah yang sebenarnya adalah karena pemeriksaan yang valid pada data di balik rantai peristiwa yang mengalir ke yang dilaporkan pengguna / pengembang.
Secara umum saya seorang programmer defensif namun saya juga percaya bahwa dengan pengujian menyeluruh TDD dan unit yang tepat Anda dapat memasukkan cek dalam kode di tingkat yang diperlukan dan yakinlah bahwa itu berfungsi sebagaimana mestinya begitu sampai ke bagian tingkat yang lebih rendah .