Programarea defensivă este crearea de cod pentru software de calculator conceput pentru a evita problemele problematice înainte ca acestea să apară și pentru a face produsul mai stabil. Ideea de bază din spatele acestei abordări este de a crea un program care să poată rula corect chiar și prin procese neprevăzute sau atunci când sunt făcute intrări neașteptate de către utilizatori. Programarea defensivă se bazează adesea pe o combinație oarecum paradoxală de eliminare a codului inutil, asigurând în același timp că sunt generate cantități suficiente pentru a gestiona toate acțiunile posibile ale utilizatorului. Testarea extensivă este, de asemenea, importantă pentru acest proces, la fel ca și crearea de software care poate fi auditat și verificat cu ușurință.
În multe privințe, conceptul de programare defensivă seamănă mult cu cel de conducere defensivă, prin aceea că problemele sunt luate în considerare înainte de a apărea. O metodă obișnuită pentru încercarea de a face acest lucru este prin crearea unui cod care este menit să facă față oricărui scenariu posibil. De obicei, programatorii încearcă să determine moduri în care utilizatorii sunt probabil să introducă input sau să încerce să utilizeze software care poate fi în afara parametrilor așteptați. Utilizarea programării defensive este construită pe baza codului în sine, care este conceput pentru a putea gestiona intrările ciudate fără a se bloca sau a întâlni un eveniment de eroare.
Aparent, în contrast cu acest element de programare defensivă, totuși, codul bine scris trebuie să fie lipsit de intrări inutile. Cu cât mai multe linii de cod fac parte dintr-un program, cu atât există mai multe oportunități de introducere a erorilor. Practicile de programare defensive încurajează de obicei dezvoltatorii să elimine codul inutil și să eficientizeze programele ori de câte ori este posibil. Prin urmare, trebuie să se găsească un echilibru între programarea care ține cont de scenarii neașteptate și codul care conține prea mult conținut inutil fără a oferi un beneficiu.
Testarea este unul dintre cele mai importante aspecte ale programării defensive. În ciuda eforturilor mari depuse pentru a se asigura că codul este perfect, dezvoltatorii aproape întotdeauna ratează o greșeală sau creează cod cu rezultate neașteptate. Testarea amănunțită de către testeri profesioniști permite unui dezvoltator să aibă sute de ore de utilizare a produsului pentru a găsi erori înainte de lansarea software-ului.
Codul în sine care este creat în programarea defensivă este, de asemenea, un aspect vital al acestui proces. Nu numai că ar trebui simplificat cât mai mult posibil, dar ar trebui și prezentat într-un mod clar și concis. Auditurile sunt adesea folosite de un dezvoltator pentru a revizui codul care a fost creat. Acest lucru permite altor programatori să vadă munca care a fost făcută, iar codul care poate fi citit este important pentru ca acesta să fie o parte realistă a dezvoltării.