Jika Anda harus memilih teknik Favorit (pandai) Anda untuk pengkodean defensif, akan seperti apa mereka? Meskipun bahasa saya saat ini adalah Java dan Objective-C (dengan latar belakang dalam C ++), jangan ragu untuk menjawab dalam bahasa apa pun. Penekanan di sini adalah pada teknik pertahanan pintar selain dari yang sudah kita ketahui 70% lebih dari kita. Jadi sekarang saatnya untuk menggali lebih dalam ke dalam tas trik Anda.
Dengan kata lain cobalah untuk memikirkan selain dari contoh yang tidak menarik ini :
if(5 == x)alih-alihif(x == 5): untuk menghindari penugasan yang tidak diinginkan
Berikut adalah beberapa contoh beberapa praktik pemrograman defensif terbaik yang menarik (contoh spesifik bahasa ada di Jawa):
- Kunci variabel Anda sampai Anda tahu bahwa Anda perlu mengubahnya
Artinya, Anda dapat mendeklarasikan semua variabel finalhingga Anda tahu bahwa Anda perlu mengubahnya, pada titik mana Anda dapat menghapus final. Satu fakta yang umumnya tidak diketahui adalah bahwa ini juga valid untuk params metode:
public void foo(final int arg) { /* Stuff Here */ }
- Ketika sesuatu yang buruk terjadi, tinggalkan jejak bukti
Ada beberapa hal yang dapat Anda lakukan ketika Anda memiliki pengecualian: jelas mencatatnya dan melakukan pembersihan akan sedikit. Tetapi Anda juga dapat meninggalkan jejak bukti (mis. Menyetel variabel ke nilai sentinel seperti "UNABLE TO LOAD FILE" atau 99999 akan berguna dalam debugger, jika Anda kebetulan melewati pengecualian catch-block).
- Ketika sampai pada konsistensi: iblis ada dalam perinciannya
Konsisten dengan perpustakaan lain yang Anda gunakan. Misalnya, di Jawa, jika Anda membuat metode yang mengekstrak rentang nilai, buat inklusif batas bawah dan eksklusif batas atas . Ini akan membuatnya konsisten dengan metode seperti String.substring(start, end)yang beroperasi dengan cara yang sama. Anda akan menemukan semua jenis metode ini di Sun JDK untuk berperilaku seperti ini karena membuat berbagai operasi termasuk iterasi elemen yang konsisten dengan array, di mana indeks mulai dari Nol ( inklusif ) hingga panjang array ( eksklusif ).
Jadi, apa saja praktik defensif favorit Anda?
Pembaruan: Jika Anda belum melakukannya, jangan ragu untuk berpadu. Saya memberikan kesempatan untuk mendapat lebih banyak tanggapan sebelum saya memilih jawaban resmi .