Sto creando un diagramma di flusso per un programma con più passaggi sequenziali. Ogni passaggio dovrebbe essere eseguito se il passaggio precedente ha esito positivo. Io uso un linguaggio di programmazione basato su c in modo che il lay-out sia simile a questo:
METODO 1:
if(step_one_succeeded())
{
if(step_two_succeeded())
{
if(step_three_succeeded())
{
//etc. etc.
}
}
}
Se il mio programma avesse più di 15 passaggi, il codice risultante sarebbe terribilmente ostile da leggere. Così ho cambiato il mio design e implementato un errorcode globale che continuo a passare per riferimento, rendere tutto più leggibile. Il codice risultante sarebbe qualcosa del tipo:
METODO 2:
int _no_error = 0;
step_one(_no_error);
if(_no_error == 0) step_two(_no_error);
if(_no_error == 0) step_three(_no_error);
if(_no_error == 0) step_two(_no_error);
La complessità ciclomatica rimane la stessa. Ora diciamo che ci sono N numero di passi. E supponiamo che il controllo di una condizione sia lungo 1 orologio e che l'esecuzione di un passo non richieda tempo.
La velocità di elaborazione di Method1 può essere ovunque tra 1 e N.
La velocità di elaborazione di Method2 tuttavia è sempre uguale a N-1.
Quindi Method1 sarà più veloce la maggior parte del tempo. Il che mi porta alla mia domanda, è una cattiva pratica sacrificare il tempo per rendere il codice più leggibile? E perché (non)?