2011-06-08 2 views
2

il y a quelques code à exécuter après validation.
considérez une variable SOQualityStandards = true;C# gérer la valeur de retour et exécuter le code

cette variable est validée avant l'exécution du code. je suis venu sur deux façons de vérifier SOQualityStandards

est un

if(SOQualityStandards) 
{ 
    //code to execute 
} 

et l'autre est

if(!SOQualityStandards) return; 
//code to execute 

est-il une différence de performance entre les deux. lequel devrais-je considérer.

Répondre

5

Ils ont la même sémantique (en supposant qu'il n'y ait pas d'autre code dans la fonction après le if-block dans le premier exemple). Je trouve le premier à être plus clair, mais c'est une question de préférence personnelle.

0

Il n'y a pas de différence entre les deux approches. C'est une question de choix personnel.

2

Le compilateur considérera ces deux options comme étant identiques et susceptibles de se transformer l'une dans l'autre ou vice versa, de sorte que les considérations de performances ne sont pas prises en compte. Même si la performance a été affectée, je pense que la lisibilité/maintenabilité est un problème plus important dans ces questions de toute façon.

J'ai tendance à faire le retour au début dans les cas comme celui-ci, car il réduit les indentations et la charge mentale en lisant le reste de la méthode. Les états testés dans les retours au début deviennent des états qui n'ont plus besoin d'être pris en compte pour comprendre la méthode. D'un autre côté, les blocs de grande taille nécessitent un suivi mental des différences d'état tout au long de la méthode.

Cela devient particulièrement important si plusieurs tests doivent être effectués pour protéger un bloc de code intérieur.

0

Le choix entre les deux est juste une préférence personnelle (voir Sven's answer et bomslang's answer). La micro-optimisation est dans la plupart des cas complètement inutile.

Vous ne devrait pas optimiser l'exécution jusqu'à ce que vous voyez que c'est un problème. Vous pourriez passer ce temps précieux à ajouter d'autres fonctionnalités ou apporter des améliorations à l'architecture du système.

Dans le cas où vous avez réellement besoin d'optimiser, boucles et les fonctions récursives sont généralement le premier endroit à regarder.

Si vous aviez besoin d'une optimisation supplémentaire, les vérifications et les manipulations de variables sur une seule ligne seraient encore parmi les dernières choses à optimiser. Rappelez-vous (comme Jeffrey said) la lisibilité et la maintenabilité sont dans la plupart des cas les facteurs les plus importants.

Questions connexes