2. Defensive Programming
• Suatu teknik pemograman untuk menjamin suatu fungsi
berjalan dengan sesuai dari pemakaian yang tidak
terduga
• Teknik pemograman yang digunakan terutama ketika
software bisa saja disalah gunakan oleh orang-orang
yang memiliki tujuan merusak atau merugikan
• Suatu pendekatan atau cara untuk meningkatkan kualitas
software dengan membuat software yang bisa diprediksi
meskipun masukan/input dari user tidak terduga
3. The Idea of Defensive Programming
• Aplikasi harus berperilaku dengan cara yang konsisten
dan dapat diprediksi bahkan dalam kasus kondisi tak
terduga
4. Pros: Defensive Programming
• Bertahan dari sesuatu yang tidak mungkin, karena
sesuatu yang tidak mungkin tetap bisa saja terjadi (e.g. in
programming context)
• Mencoba sebisa mungkin untuk melakukan atau
memberikan respon suatu hal yang benar (tidak crash)
ketika suatu input atau data yang digunakan tidak sesuai
(e.g. Divide by zero error, showing message, or make the
divider to one)
5. Cons: Defensive Programming
• Mengapa bertahan dari sesuatu yang tidak mungkin jika
itu tidak mungkin?
• Counter1: Sesuatu hal yang tidak mungkin menjadi
mungkin ketika ada orang baru dalam team, dan ketika
maintenance code
• Counter2: Manusia membuat segalanya mungkin ketika
membuat kesalahan
• Menambah jumlah baris code (Fat Code) dan sulit untuk
diubah
• Counter3: Gunakan prinsip DRY atau Refactoring untuk
memecah function yang besar
6. Strategi (checklist)
• Jangan pernah percaya input data dari user atau dari
eksternal atau bahkan dari internal (e.g. Database
with field contain NULL), harus selalu divalidasi
• Tidak peduli seberapa mungkin, berusaha keraslah
untuk mencegahnya (Preventive Logic)
• Jangan ber-asumsi jika suatu input atau parameter sudah
divalidasi di proses sebelumnya, selalu lakukan checking
ulang
• Fail early, cleanly, and openly - menyatakan apa yang
terjadi, di mana dan bagaimana memperbaikinya