SlideShare a Scribd company logo
DEFENSIVE
PROGRAMMING
Sharing Session for
Developer Improvement
And Better Code Quality
By Freddy Munandar
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
The Idea of Defensive Programming
• Aplikasi harus berperilaku dengan cara yang konsisten
dan dapat diprediksi bahkan dalam kasus kondisi tak
terduga
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)
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
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
~ DEMO ~
Referensi
• http://geekswithblogs.net/sdorman/archive/2008/07/04/wh
at-is-ldquodefensive-programmingrdquo.aspx
• http://c2.com/cgi/wiki?DefensiveProgramming

More Related Content

PPTX
Ragam Dialog :: Interaksi Manusia dan Komputer
PPTX
Algoritma Greedy (contoh soal)
PDF
Matematika Diskrit - 11 kompleksitas algoritma - 03
PPT
INTERAKSI MANUSIA DAN KOMPUTER
PPTX
Imk 1 pendahuluan
PPTX
SLIDE KE:5 NFA
PPTX
Analisis Semantik - P 6 Teknik Kompilasi
DOCX
Soal konsep sistem informasi abc
Ragam Dialog :: Interaksi Manusia dan Komputer
Algoritma Greedy (contoh soal)
Matematika Diskrit - 11 kompleksitas algoritma - 03
INTERAKSI MANUSIA DAN KOMPUTER
Imk 1 pendahuluan
SLIDE KE:5 NFA
Analisis Semantik - P 6 Teknik Kompilasi
Soal konsep sistem informasi abc

What's hot (20)

PPTX
Slide minggu 6 (citra digital)
PPTX
Rpl 10-perancangan user interface
PDF
Prinsip User Interface Design
PPTX
Materi 3 Finite State Automata
PDF
Sistem Komputer Kelas 8
PDF
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
PPTX
PPT Desain Antar Muka.pptx
PPT
Konstruksi perangkat lunak
PPTX
Basis Data : Pemodelan Erd
DOCX
Use skenario
PDF
contoh portfolio project aplikasi sistem informasi publik (SIP) untuk badan p...
PPTX
Optimasi query
PPTX
Membuat Wireframe.pptx
PPTX
Intermediate code kode antara
PPTX
Perangkat lunak presentation
PDF
Teori bahasa-dan-otomata
DOCX
Dokumen srs -_sistem_informasi_koperasi
PPTX
Algoritma & Pemrograman
PPTX
Requirement Engineering
Slide minggu 6 (citra digital)
Rpl 10-perancangan user interface
Prinsip User Interface Design
Materi 3 Finite State Automata
Sistem Komputer Kelas 8
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
PPT Desain Antar Muka.pptx
Konstruksi perangkat lunak
Basis Data : Pemodelan Erd
Use skenario
contoh portfolio project aplikasi sistem informasi publik (SIP) untuk badan p...
Optimasi query
Membuat Wireframe.pptx
Intermediate code kode antara
Perangkat lunak presentation
Teori bahasa-dan-otomata
Dokumen srs -_sistem_informasi_koperasi
Algoritma & Pemrograman
Requirement Engineering
Ad

Similar to Defensive Programming (20)

PPTX
Extreme Programming
PDF
Software testing management
PPTX
Ppt etika programmer
PDF
Algoritam1
PPTX
Perkuliahan 02 Model software engginer
PPTX
Pertemuan 2 pemrograman mobile.pptx
PDF
TD-666-01-teknik-pemrograman
PPTX
Warna-warni Retro Personal Portfolio Presentation.pptx
PPTX
folder toni dan gieo.pptx
PPTX
folder toni dan gieo.pptx
PDF
Pertemuan 2.pdf
PDF
Pertemuan 4 - Scrum.pdf
PDF
001 bab xi bahasa pemograman
PDF
Bab 11 bahasa pemograman
PPTX
xnajxax jaaxaxaxax a axax ax ax ax a xaxa x
PPT
1 pengenalanrpl
PPTX
Tugas Modifikasi Perangkat Lunak untuk siswa kelas XI SMA
PPT
Interaksi Manusia & Komputer Part 2 & 3
DOCX
Laporan prakerin TKJ kontrol Tiemviewer
PPT
PENGENALAN REKAYASA PERANGKAT LUNAK .ppt
Extreme Programming
Software testing management
Ppt etika programmer
Algoritam1
Perkuliahan 02 Model software engginer
Pertemuan 2 pemrograman mobile.pptx
TD-666-01-teknik-pemrograman
Warna-warni Retro Personal Portfolio Presentation.pptx
folder toni dan gieo.pptx
folder toni dan gieo.pptx
Pertemuan 2.pdf
Pertemuan 4 - Scrum.pdf
001 bab xi bahasa pemograman
Bab 11 bahasa pemograman
xnajxax jaaxaxaxax a axax ax ax ax a xaxa x
1 pengenalanrpl
Tugas Modifikasi Perangkat Lunak untuk siswa kelas XI SMA
Interaksi Manusia & Komputer Part 2 & 3
Laporan prakerin TKJ kontrol Tiemviewer
PENGENALAN REKAYASA PERANGKAT LUNAK .ppt
Ad

More from Freddy Munandar (6)

PDF
Guiding Software Developer To "Heaven" Through "Darkness"
PPTX
Software Architecture Fundamentals Part-1-Architecture soft skills
PPTX
Software architecture introduction
PPTX
Mobile Apps Analytics - Sharing Session
PDF
Research .NET Transaction
PDF
Sniff SOLID Principle Violation using Code Metrics
Guiding Software Developer To "Heaven" Through "Darkness"
Software Architecture Fundamentals Part-1-Architecture soft skills
Software architecture introduction
Mobile Apps Analytics - Sharing Session
Research .NET Transaction
Sniff SOLID Principle Violation using Code Metrics

Defensive Programming

  • 1. DEFENSIVE PROGRAMMING Sharing Session for Developer Improvement And Better Code Quality By Freddy Munandar
  • 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