Professional Documents
Culture Documents
Pertemuan 1 Defensive Programming
Pertemuan 1 Defensive Programming
Defensive Programming
Pokok Bahasan
• Protecting Your Program From Invalid Inputs
• Assertions
• Exceptions
• Debugging Aids
• Barricade Your Program to Contain the
Damage Caused by Errors
Dalam pemrograman defensif, ide utama adalah bahwa
jika suatu rutin melewati data yang buruk, itu tidak akan terluka,
bahkan jika data yang buruk adalah kesalahan rutin lainnya.
Secara umum, ini adalah pengakuan bahwa program akan
memiliki masalah dan modifikasi, dan bahwa seorang
programmer yang cerdas akan mengembangkan kode yang
sesuai. Jika Anda adalah seorang programmer yang
berpengalaman, Anda dapat melewati bagian selanjutnya
tentang penanganan input data dan mulai dengan Bagian yang
mengulas penggunaan pernyataan.
Protecting Your Program
From Invalid Inputs
Anda mungkin pernah mendengar ungkapan, "Garbage in,
garbage out.” Ekspresi itu pada dasarnya adalah versi
pengembangan perangkat lunak dari emptor peringatan:
biarkan pengguna berhati-hatilah. Untuk perangkat lunak
produksi, sampah tidak cukup baik. Suatu program yang baik
tidak pernah membuang sampah, terlepas dari apa yang
diperlukan. Program yang baik menggunakan “sampah masuk,
tidak ada yang keluar”; "Sampah masuk, pesan kesalahan
keluar"; atau “tidak ada sampah yang diizinkan masuk”
sebagai gantinya. Menurut standar hari ini, "sampah masuk,
sampah keluar" adalah tanda dari program ceroboh dan tidak
aman. 42
Ada tiga cara umum untuk menangani sampah.
Ada tiga cara umum untuk menangani sampah:
1. Check the values of all data from external sources
Saat mendapatkan data dari file, pengguna, jaringan, atau
wajah eksternal antar lainnya, periksa untuk memastikan
bahwa data berada dalam kisaran yang diijinkan. Pastikan
bahwa nilai numerik berada dalam toleransi dan string cukup
pendek untuk ditangani. Jika string dimaksudkan untuk
mewakili rentang nilai terbatas (seperti ID transaksi keuangan
atau yang serupa), pastikan string tersebut valid untuk tujuan
yang dimaksudkan; kalau tidak tolak. Jika Anda bekerja pada
aplikasi yang aman, terutama curiga data yang mungkin
menyerang sistem Anda: mencoba buffer overflows,
menyuntikkan perintah SQL, menyuntikkan html atau kode
XML, integer over flow, dan sebagainya.
2. Check the values of all routine input parameters
Memeriksa nilai-nilai parameter input rutin pada dasarnya
sama dengan memeriksa data yang berasal dari sumber
eksternal, kecuali bahwa data tersebut berasal dari rutin
lain, bukan dari antarmuka eksternal.