Apakah ini praktik yang baik untuk menerapkan penanganan pengecualian yang tidak berguna, kalau-kalau bagian lain dari kode tidak dikodekan dengan benar?
Contoh dasar
Yang sederhana, jadi saya tidak kehilangan semuanya :).
Katakanlah saya sedang menulis aplikasi yang akan menampilkan informasi seseorang (nama, alamat, dll.), Data yang diekstrak dari basis data. Katakanlah saya yang mengkode bagian UI, dan orang lain sedang menulis kode permintaan DB.
Sekarang bayangkan bahwa spesifikasi aplikasi Anda mengatakan bahwa jika informasi orang tersebut tidak lengkap (katakanlah, nama tersebut tidak ada dalam database), orang yang mengkode kueri harus menangani ini dengan mengembalikan "NA" untuk bidang yang hilang.
Bagaimana jika kueri memiliki kode yang buruk dan tidak menangani kasus ini? Bagaimana jika orang yang menulis kueri menangani Anda dengan hasil yang tidak lengkap, dan ketika Anda mencoba untuk menampilkan informasi, semuanya macet, karena kode Anda tidak siap untuk menampilkan barang kosong?
Contoh ini sangat mendasar. Saya percaya sebagian besar dari Anda akan berkata "itu bukan masalah Anda, Anda tidak bertanggung jawab atas kecelakaan ini". Tapi, itu masih bagian dari kode Anda yang sedang crash.
Contoh lain
Katakanlah sekarang akulah yang menulis kueri. Spesifikasi tidak mengatakan hal yang sama seperti di atas, tetapi orang yang menulis kueri "sisipkan" harus memastikan semua bidang sudah lengkap saat menambahkan seseorang ke database untuk menghindari memasukkan informasi yang tidak lengkap. Haruskah saya melindungi permintaan "pilih" untuk memastikan saya memberikan informasi lengkap kepada orang UI?
Pertanyaan-pertanyaan
Bagaimana jika spesifikasinya tidak secara jelas mengatakan "orang ini yang bertanggung jawab menangani situasi ini"? Bagaimana jika orang ketiga mengimplementasikan kueri lain (mirip dengan yang pertama, tetapi pada DB lain) dan menggunakan kode UI Anda untuk menampilkannya, tetapi tidak menangani kasus ini dalam kodenya?
Haruskah saya melakukan apa yang perlu untuk mencegah kemungkinan tabrakan, bahkan jika saya bukan orang yang seharusnya menangani kasus buruk?
Saya tidak mencari jawaban seperti "(dia) yang bertanggung jawab atas kecelakaan itu", karena saya tidak menyelesaikan konflik di sini, saya ingin tahu, haruskah saya melindungi kode saya terhadap situasi itu bukan tanggung jawab saya untuk menangani? Di sini, cukup "jika kosong melakukan sesuatu" sudah cukup.
Secara umum, pertanyaan ini menangani penanganan pengecualian yang berlebihan. Saya menanyakannya karena ketika saya bekerja sendirian di sebuah proyek, saya dapat mengkodekan 2-3 kali pengecualian yang sama yang menangani fungsi berturut-turut, "untuk berjaga-jaga" Saya melakukan sesuatu yang salah dan membiarkan kasus buruk masuk.