2010-07-05 9 views
2

avec retour uniquement dans le cas où la méthode peut quitter immédiatementDéclaration de branchement: meilleur break ou return dans un cycle for/while? Il est évident que

for (...) { 
    return; 
} 

ou

for() { 
    break; 
} 

Quel est le meilleur?

+1

* related *: http://stackoverflow.com/questions/36707/should-a-function-have-only-one-return-statement –

+1

pause et retour ont un comportement différent, donc il n'y a pas vraiment de réponse à demander qui est "meilleur" – fearofawhackplanet

Répondre

3

Les deux exemples que vous avez donnés ne sont pas exactement équivalents, donc c'est un peu difficile de dire quel est le meilleur style. Voici deux approches qui sont un peu plus semblable à ce qu'ils font:

for (Foo foo: foos) { 

    // ... 

    if (ok) { return foo; } 
} 
return null; 

Versus:

Foo result = null; 

for (Foo foo: foos) { 

    // ... 

    if (ok) { 
     result = foo; 
     break; 
    } 
} 

return result; 

Dans ce cas, je vous recommande le premier parce qu'il est beaucoup plus simple. Il est peu probable qu'il y ait une différence de performance significative. Certaines personnes préfèrent la seconde parce qu'elles ne veulent qu'un seul retour dans chaque fonction, mais je ne pense pas que ce soit toujours une bonne idée de s'en tenir à cette règle. Parfois, plusieurs déclarations de retour rend les choses beaucoup plus claires.

0

Je suggère plutôt l'approche de la pause. Il ressemble à plus de code mais est plus facile à comprendre. De plus, faire des changements plus tard est plus facile. Vous pouvez opter pour des boucles étiquetées pour plus de clarté.

0

De toute évidence avec return que dans le cas où la méthode peut quitter immédiatement

Vous avez répondu à votre propre question. Ces deux ont une sémantique différente et ne sont pas vraiment interchangeables, et la variante return est applicable uniquement aux scénarios plus spécifiques ...

... ainsi précisément dans ces scénarios spécifiques vous devez utiliser la variante return. L'intention est immédiatement évidente et ainsi il rend une meilleure lisibilité. Si vous utilisez un break lorsque return suffit, le lecteur doit passer plus de temps à comprendre ce qui se passe après le break. Quand rien de significatif ne se produit, un return aurait rapidement transmis cela beaucoup plus clairement.

Questions connexes