Ho cercato Programmer e Stackoverflow e non sono riuscito a trovare una risposta soddisfacente, anche se sono abbastanza sicuro che sia stato chiesto molte volte in passato. La domanda che ho trovato ha solo risposte che riguardano solo la leggibilità. I seguenti estratti di codice provengono dal codice C # che stavo scrivendo.
Quando si ha a che fare con una variabile locale che ha qualche valore calcolato quando una condizione è vera ma un valore predefinito altrimenti, io:
Prima imposta il valore, quindi modifica il valore quando la condizione è vera?
short version = 1; // <-- set the value here.
if (separator != -1)
{
version = Int16.Parse(filename.Substring(separator + 1));
filename = filename.Substring(0, separator);
}
Oppure non imposta il valore e aggiungi un altro quando la condizione è falsa?
short version;
if (separator != -1)
{
version = Int16.Parse(filename.Substring(separator + 1));
filename = filename.Substring(0, separator);
}
else
version = 1; // <-- set the value here.
Un programmatore potrebbe avere aspettative sbagliate di fronte a una delle due soluzioni (ad esempio quando la clausola if è abbastanza grande e la clausola else è molto discendente, fuori dalla vista)? Hai qualche esperienza in cui la differenza contava? Perché uno stile particolare viene applicato alla tua azienda e perché? Ci sono motivi tecnici per cui si preferirebbe l'uno rispetto all'altro? Il primo imposta una variabile due volte, ma non sono sicuro se ciò sarebbe importante nei moderni ottimizzatori di compilazione.