È una variabile temporanea incorporata raccomandata in una dichiarazione di ritorno?

-2

Ho un metodo a che restituisce qualcosa del genere:

List<Customer> customers = repository.GetCustomers.Where(x => x.IsActive);

return customers;

Gli strumenti di Visual Studio suggeriscono una variabile temporanea incorporata:

return repository.GetCustomers.Where(x => x.IsActive);

Anni fa ho sentito un suggerimento su un podcast .Net (l'ospite che non ricordo) che ci sono alcuni vantaggi di memoria / prestazioni per la prima opzione.

La micro-ottimizzazione domanda parla di questo problema in un contesto generale. Ma è davvero solo micro-ottimizzazione o preferenza di stile?

    
posta Mike Henderson 15.09.2018 - 17:11
fonte

2 risposte

3

Avere una variabile locale è buono per il debug, ma lo rimuoverò quando non è più necessario per motivi di leggibilità.

Esiste effettivamente una differenza tra l'IL generato e le prestazioni tra i due, ma è infinitamente piccola rispetto alle chiamate associate ai dati nell'applicazione. Ho dovuto iterare miliardi di volte prima di vedere qualsiasi differenza temporale.

In conclusione, non importa. Visual Studio (e per estensione, Microsoft) suggerisce solo di rimuovere la variabile locale per migliorare la leggibilità .

Questa è una preferenza di stile.

    
risposta data 15.09.2018 - 20:31
fonte
4

Supponendo che il tipo di reso sia anche List < Customer > Lo troverei sorprendente se ci fosse qualche differenza nel codice risultante tra le due opzioni. Preferirei il primo perché è più adatto al debug. Ti consente di interrompere la dichiarazione di reso e di ispezionare la raccolta.

    
risposta data 15.09.2018 - 17:20
fonte

Leggi altre domande sui tag