È considerata una buona pratica associare dinamicamente i tipi di ritorno dal contesto Entità?

2
MyDbEntities context = new MyDbEntities();
var result = context.StoredProcedureName(userId);

Nella situazione di cui sopra, è considerata la best practice usare var o ObjectResult<ComplexType> ?

    
posta P.Brian.Mackey 07.03.2012 - 23:44
fonte

2 risposte

5

Generalmente, se non puoi dire il tipo di ritorno leggendo la riga in questione (o un'altra linea molto vicina), dovresti usare il tipo esplicito. Ciò renderà la leggibilità del tuo codice molto migliore.

var deve essere utilizzato solo quando il tipo implicito è individuabile nella stessa riga di codice o molto vicino.

Nel tuo esempio, dovresti davvero utilizzare ObjectResult<ComplexType> :

ObjectResult<ComplexType> result = context.StoredProcedureName(userId);

Questi casi sono ok per var , perché i tipi sono facilmente distinguibili:

var user = context.Users.First(x => x.Id == userId);

o

var users = context.Users.Where(x => x.LastName == lastName);
foreach(var user in users)
{
  //do stuff
}
    
risposta data 08.03.2012 - 00:34
fonte
1

Non avrei problemi a usare var se il nome del tuo metodo e / o il nome della variabile indicavano chiaramente cosa veniva restituito. La leggibilità è la chiave.

var foos = context.GetUnallocatedFoosForUser(userId);

Per quello che vale, quando usi var, non stai legando dinamicamente nulla. Il compilatore E l'IDE sanno di che tipo (anche se è solo object ) con cui hai a che fare qui. La parola chiave var è solo una scorciatoia per "utilizzare qualsiasi tipo sia sul lato destro".

Sarebbe diverso se tu usassi dynamic , ma questo è un tipo di domanda molto diverso e non applicabile in questa situazione.

    
risposta data 08.03.2012 - 00:43
fonte

Leggi altre domande sui tag