Con l'introduzione dei tipi anonimi in C # abbiamo ottenuto la parola chiave var
.
Ora le persone usano var
ovunque anziché il tipo corretto. I motivi che ho sentito per questo sono:
- Rende più facile il refactoring
- È più breve
- migliora la leggibilità
Un esempio comune potrebbe essere
var result = client.GetResult(query);
è migliore di:
MyObject result = client.GetResult(query);
Perché se si refactoring GetResult per restituire un oggetto diverso; ad esempio:
MyOtherObject result = client.GetResult(query);
non è necessario anche rifattorizzare il codice chiamante.
Tuttavia, di recente ho dovuto eseguire il seguente refactoring
IEnumerable<MyObject> GetResult(query)
a
Task<List<MyObject>> GetResult(query)
Il codice chiamante era lungo le linee di
//return true if there are any results
var result = client.GetResult(query);
if(result != null)
{
return true;
}
return false;
Che dopo il refactoring sarebbe ancora compilato e restituire sempre true. Mentre il modulo tipizzato esplicitamente avrebbe generato un errore di compilazione.
. La domanda è. Dato che ci sono degli svantaggi nell'usare var al posto della variabile tipizzata esplicitamente. È semplicemente un caso di preferenza per lo stile di codifica, o ci sono chiare ragioni per usare o non usare var in questo modo? (ad es. se richiesto con tipi anonimi)