SlideShare a Scribd company logo
1 of 8
Download to read offline
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

What's hot

Representasi Pengetahuan
Representasi PengetahuanRepresentasi Pengetahuan
Representasi PengetahuanSherly Uda
 
Bab 2 Aljabar Relasional
Bab 2   Aljabar RelasionalBab 2   Aljabar Relasional
Bab 2 Aljabar RelasionalRatzman III
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomataBanta Cut
 
Ragam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerRagam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerAuliaa Oktarianii
 
Dualitas- Program Linear
Dualitas- Program LinearDualitas- Program Linear
Dualitas- Program LinearHelvyEffendi
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automataahmad haidaroh
 
Interaksi Manusia Dan Komputer 4
Interaksi Manusia Dan Komputer 4Interaksi Manusia Dan Komputer 4
Interaksi Manusia Dan Komputer 4Hide Maru
 
Makalah kelompok 4 metode simpleks
Makalah kelompok 4 metode simpleksMakalah kelompok 4 metode simpleks
Makalah kelompok 4 metode simpleksNila Aulia
 
03 limit dan kekontinuan
03 limit dan kekontinuan03 limit dan kekontinuan
03 limit dan kekontinuanRudi Wicaksana
 
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Fatma Qolbi
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)zachrison htg
 
Pembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja onlinePembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja onlineandiseprianto
 
[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handlingrizki adam kurniawan
 
Analisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKAnalisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKMiftahul Muttaqin
 
Algoritma pencarian lintasan jalur terpendek
Algoritma pencarian lintasan jalur terpendekAlgoritma pencarian lintasan jalur terpendek
Algoritma pencarian lintasan jalur terpendekLaili Wahyunita
 
Aljabar linear:Kebebasan Linear, Basis, dan Dimensi.ppt
Aljabar linear:Kebebasan Linear, Basis, dan Dimensi.pptAljabar linear:Kebebasan Linear, Basis, dan Dimensi.ppt
Aljabar linear:Kebebasan Linear, Basis, dan Dimensi.pptrahmawarni
 
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidelPenyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidelBAIDILAH Baidilah
 
Pertemuan 3 relasi & fungsi
Pertemuan 3 relasi & fungsiPertemuan 3 relasi & fungsi
Pertemuan 3 relasi & fungsiaansyahrial
 

What's hot (20)

Representasi Pengetahuan
Representasi PengetahuanRepresentasi Pengetahuan
Representasi Pengetahuan
 
Bab 2 Aljabar Relasional
Bab 2   Aljabar RelasionalBab 2   Aljabar Relasional
Bab 2 Aljabar Relasional
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomata
 
Ragam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerRagam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan Komputer
 
Met num 2
Met num 2Met num 2
Met num 2
 
Dualitas- Program Linear
Dualitas- Program LinearDualitas- Program Linear
Dualitas- Program Linear
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Interaksi Manusia Dan Komputer 4
Interaksi Manusia Dan Komputer 4Interaksi Manusia Dan Komputer 4
Interaksi Manusia Dan Komputer 4
 
Makalah kelompok 4 metode simpleks
Makalah kelompok 4 metode simpleksMakalah kelompok 4 metode simpleks
Makalah kelompok 4 metode simpleks
 
03 limit dan kekontinuan
03 limit dan kekontinuan03 limit dan kekontinuan
03 limit dan kekontinuan
 
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)
 
Pembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja onlinePembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja online
 
Dppl
DpplDppl
Dppl
 
[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling
 
Analisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKAnalisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMK
 
Algoritma pencarian lintasan jalur terpendek
Algoritma pencarian lintasan jalur terpendekAlgoritma pencarian lintasan jalur terpendek
Algoritma pencarian lintasan jalur terpendek
 
Aljabar linear:Kebebasan Linear, Basis, dan Dimensi.ppt
Aljabar linear:Kebebasan Linear, Basis, dan Dimensi.pptAljabar linear:Kebebasan Linear, Basis, dan Dimensi.ppt
Aljabar linear:Kebebasan Linear, Basis, dan Dimensi.ppt
 
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidelPenyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
Penyelesaian sistem persamaan linear dengan metode iterasi gauss seidel
 
Pertemuan 3 relasi & fungsi
Pertemuan 3 relasi & fungsiPertemuan 3 relasi & fungsi
Pertemuan 3 relasi & fungsi
 

Similar to DEFENSIF PROGRAMMING

Ppt etika programmer
Ppt etika programmerPpt etika programmer
Ppt etika programmerDhewiie Whiee
 
Pertemuan 2 pemrograman mobile.pptx
Pertemuan 2 pemrograman mobile.pptxPertemuan 2 pemrograman mobile.pptx
Pertemuan 2 pemrograman mobile.pptxTaufikIqbalR1
 
TD-666-01-teknik-pemrograman
TD-666-01-teknik-pemrogramanTD-666-01-teknik-pemrograman
TD-666-01-teknik-pemrogramanTino Dwiantoro
 
Warna-warni Retro Personal Portfolio Presentation.pptx
Warna-warni Retro Personal Portfolio Presentation.pptxWarna-warni Retro Personal Portfolio Presentation.pptx
Warna-warni Retro Personal Portfolio Presentation.pptxAnhonk1402
 
folder toni dan gieo.pptx
folder toni dan gieo.pptxfolder toni dan gieo.pptx
folder toni dan gieo.pptxToni239316
 
folder toni dan gieo.pptx
folder toni dan gieo.pptxfolder toni dan gieo.pptx
folder toni dan gieo.pptxToni239316
 
Pertemuan 4 - Scrum.pdf
Pertemuan 4 - Scrum.pdfPertemuan 4 - Scrum.pdf
Pertemuan 4 - Scrum.pdfJulianaMansur6
 
001 bab xi bahasa pemograman
001 bab xi bahasa pemograman001 bab xi bahasa pemograman
001 bab xi bahasa pemogramanRhendy Thanaya
 
Bab 11 bahasa pemograman
Bab 11   bahasa pemogramanBab 11   bahasa pemograman
Bab 11 bahasa pemogramanFisma Ananda
 
1 pengenalanrpl
1 pengenalanrpl1 pengenalanrpl
1 pengenalanrplmamas12
 
Interaksi Manusia & Komputer Part 2 & 3
Interaksi Manusia & Komputer Part 2 & 3Interaksi Manusia & Komputer Part 2 & 3
Interaksi Manusia & Komputer Part 2 & 3Raga Gapilau Jatsuma
 
Laporan prakerin TKJ kontrol Tiemviewer
Laporan prakerin TKJ kontrol TiemviewerLaporan prakerin TKJ kontrol Tiemviewer
Laporan prakerin TKJ kontrol Tiemvieweramenk mezzo
 
Manajemen proyek perangkat lunak syafria zepri pratama
Manajemen proyek perangkat lunak syafria zepri pratama Manajemen proyek perangkat lunak syafria zepri pratama
Manajemen proyek perangkat lunak syafria zepri pratama safriazepripratama
 

Similar to DEFENSIF PROGRAMMING (20)

Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Software testing management
Software testing managementSoftware testing management
Software testing management
 
Ppt etika programmer
Ppt etika programmerPpt etika programmer
Ppt etika programmer
 
Algoritam1
Algoritam1Algoritam1
Algoritam1
 
Perkuliahan 02 Model software engginer
Perkuliahan 02 Model software engginerPerkuliahan 02 Model software engginer
Perkuliahan 02 Model software engginer
 
Pertemuan 2 pemrograman mobile.pptx
Pertemuan 2 pemrograman mobile.pptxPertemuan 2 pemrograman mobile.pptx
Pertemuan 2 pemrograman mobile.pptx
 
TD-666-01-teknik-pemrograman
TD-666-01-teknik-pemrogramanTD-666-01-teknik-pemrograman
TD-666-01-teknik-pemrograman
 
Warna-warni Retro Personal Portfolio Presentation.pptx
Warna-warni Retro Personal Portfolio Presentation.pptxWarna-warni Retro Personal Portfolio Presentation.pptx
Warna-warni Retro Personal Portfolio Presentation.pptx
 
folder toni dan gieo.pptx
folder toni dan gieo.pptxfolder toni dan gieo.pptx
folder toni dan gieo.pptx
 
folder toni dan gieo.pptx
folder toni dan gieo.pptxfolder toni dan gieo.pptx
folder toni dan gieo.pptx
 
Pertemuan 2.pdf
Pertemuan 2.pdfPertemuan 2.pdf
Pertemuan 2.pdf
 
Pertemuan 4 - Scrum.pdf
Pertemuan 4 - Scrum.pdfPertemuan 4 - Scrum.pdf
Pertemuan 4 - Scrum.pdf
 
001 bab xi bahasa pemograman
001 bab xi bahasa pemograman001 bab xi bahasa pemograman
001 bab xi bahasa pemograman
 
Bab 11 bahasa pemograman
Bab 11   bahasa pemogramanBab 11   bahasa pemograman
Bab 11 bahasa pemograman
 
1 pengenalanrpl
1 pengenalanrpl1 pengenalanrpl
1 pengenalanrpl
 
Interaksi Manusia & Komputer Part 2 & 3
Interaksi Manusia & Komputer Part 2 & 3Interaksi Manusia & Komputer Part 2 & 3
Interaksi Manusia & Komputer Part 2 & 3
 
Laporan prakerin TKJ kontrol Tiemviewer
Laporan prakerin TKJ kontrol TiemviewerLaporan prakerin TKJ kontrol Tiemviewer
Laporan prakerin TKJ kontrol Tiemviewer
 
Pengenalan RPL
Pengenalan RPLPengenalan RPL
Pengenalan RPL
 
RPL
RPLRPL
RPL
 
Manajemen proyek perangkat lunak syafria zepri pratama
Manajemen proyek perangkat lunak syafria zepri pratama Manajemen proyek perangkat lunak syafria zepri pratama
Manajemen proyek perangkat lunak syafria zepri pratama
 

More from Freddy Munandar

Guiding Software Developer To "Heaven" Through "Darkness"
Guiding Software Developer To "Heaven" Through "Darkness"Guiding Software Developer To "Heaven" Through "Darkness"
Guiding Software Developer To "Heaven" Through "Darkness"Freddy Munandar
 
Software Architecture Fundamentals Part-1-Architecture soft skills
Software Architecture Fundamentals Part-1-Architecture soft skillsSoftware Architecture Fundamentals Part-1-Architecture soft skills
Software Architecture Fundamentals Part-1-Architecture soft skillsFreddy Munandar
 
Software architecture introduction
Software architecture introductionSoftware architecture introduction
Software architecture introductionFreddy Munandar
 
Mobile Apps Analytics - Sharing Session
Mobile Apps Analytics - Sharing SessionMobile Apps Analytics - Sharing Session
Mobile Apps Analytics - Sharing SessionFreddy Munandar
 
Research .NET Transaction
Research .NET TransactionResearch .NET Transaction
Research .NET TransactionFreddy Munandar
 
Sniff SOLID Principle Violation using Code Metrics
Sniff SOLID Principle Violation using Code MetricsSniff SOLID Principle Violation using Code Metrics
Sniff SOLID Principle Violation using Code MetricsFreddy Munandar
 

More from Freddy Munandar (6)

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

DEFENSIF 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