Disclaimer: Sono un laico che attualmente sta imparando a programmare. Mai stato parte di un progetto, né scritto qualcosa di più lungo di ~ 500 linee.La programmazione difensiva viola il principio DRY?
La mia domanda è: la programmazione difensiva viola il principio Non ripetere te stesso? Supponendo che la mia definizione di programmazione difensiva sia corretta (se la funzione di chiamata convalida l'input anziché l'opposto), non sarebbe dannoso per il tuo codice?
per esempio, è questa cattiva:
int foo(int bar)
{
if (bar != /*condition*/)
{
//code, assert, return, etc.
}
}
int main()
{
int input = 10;
foo(input); //doesn't the extra logic
foo(input); //and potentially extra calls
foo(input); //work against you?
}
rispetto a questo:
int main()
{
if (input == /*condition*/)
{
foo(input);
foo(input);
foo(input);
}
}
Ancora una volta, come un laico, non so quanto contano le dichiarazioni logiche semplici contro di voi, per quanto come le prestazioni vanno, ma sicuramente la programmazione difensiva non è buona per il programma o l'anima.
Come si riferisce a C++? – xtofl
Spiacente, rimuovi quel tag se vuoi..Perché l'ho usato negli esempi però. – jkeys
Ho scritto questo quando stavo insegnando a me stesso all'età di 15 anni. Probabilmente ora conosco meno parole strani, ma ho scritto programmi più sostanziali. Due passi avanti suppongo ... – jkeys