Programarea cu potriviri , denumită uneori „programare aleatorie”, este o abordare a dezvoltării software în care programatorul rezolvă o problemă în mod iterativ, făcând mici modificări ( permutări ) și testând fiecare modificare pentru a vedea dacă se comportă așa cum se dorește.
Această abordare pare uneori atractivă atunci când programatorul nu înțelege pe deplin codul și consideră că una sau mai multe mici modificări pot duce la un cod corect.
De exemplu, următorul exemplu de cod C (conceput pentru a găsi și copia o secvență de cifre dintr-un șir mare) are mai multe probleme:
char * buffer = "123abc" ; destinație char [ 10 ]; int i = 0 ; int j = 0 ; intl = strlen ( buffer ) ; în timp ce ( i < l ) { if ( isdigit ( buffer [ i ])) { destinație [ j ++ ] = buffer [ i ++ ]; } ++ i ; } destinație [ j ] = '\0' ; printf ( "%s \n " , destinație );Dar acest lucru nu dă rezultatul corect. Pentru un șir de început dat, se afișează „13”, în timp ce rezultatul corect este „123”. Un programator care nu vede problema structurală ar putea sări la o comandă și să spună: „Da, asta este un increment suplimentar”. Îndepărtează linia „++i”, dar programul face bucle la testare. „Hopa, mărire greșită”. Comanda este repusă la loc și eliminată de variabila post-increment i pe linia de mai sus:
if ( isdigit ( buffer [ i ])) { destinație [ j ++ ] = buffer [ i ]; }În timpul testării, codul produce acum răspunsul corect, „123”. Cu toate acestea, deoarece programatorul nu s-a deranjat să înțeleagă pe deplin codul, rămân următoarele probleme:
Deși soluția va fi adecvată pentru un anumit set de intrări, nu este corectă pentru toate aceste intrări, iar comentariile asupra unui astfel de cod vor persista în timp.