2 votes

Utiliser break dans une boucle for ou pas ?

Juste une petite question, disons que la classe Car étend HashMap(String, String).

1.

for (Car car : carList) {
    if (car.isEmpty) {
        break;
    }
    doSomething();
}

2.

for (Car car : carList) {
    if (!car.isEmpty) {
        doSomethingElse();
    }
}

Lequel des deux ci-dessus est le meilleur ? Merci.

---- édité ---- Désolé, je n'ai pas été assez clair.

La méthode doSomething() fait en fait différentes choses. Je les ai changées en doSomething() et doSometingElse().

Ma question est la suivante : allez-vous mettre tout le processus dans un seul if() ? ou bien rompre d'abord la boucle si la condition if() n'est pas satisfaite.

Merci.

8voto

Ils font des choses complètement différentes. La première arrête l'itération dès que la condition est vraie, tandis que la seconde saute simplement le traitement pendant les itérations où la condition est fausse.

Changer le break a continue dans le premier les fera fonctionner de la même manière.

1voto

Nikita Rybak Points 36641

Ils font des choses complètement différentes. La première version s'arrête après avoir vu la première voiture vide. La deuxième version va "faire quelque chose" pour chaque voiture non vide. Je pense que vous devriez utiliser continue au lieu de l'opérateur break .

0voto

kkress Points 459

Ces deux boucles ne font pas la même chose.

  1. terminera la boucle la première fois qu'elle trouvera une voiture vide, isEmpty ignorant toutes les voitures après la première voiture vide. Vous pouvez faire fonctionner ceci comme 2. si vous changez ' break à continue '

  2. fera quelque chose pour toutes les voitures non vides.

0voto

james_bond Points 2592

Cela dépend de ce que vous essayez de faire, la première boucle se terminera dès que la condition sera remplie, tandis que la seconde itérera à travers tout le hashmap.

0voto

Bill K Points 32115

Si vous vouliez vraiment dire "continue" et non "break", alors je dirais qu'il vaut mieux ne pas utiliser continue ou break.

Ce n'est pas très grave, mais des instructions telles que continue, break et return sont toutes essentiellement des instructions goto qui ont été un peu habillées. Au lieu d'aller chercher une ligne ou une étiquette, elles vont chercher le haut ou le bas d'une structure de contrôle. Cela oblige le programmeur à réfléchir un peu lorsqu'il fait le suivi, ce qui signifie une perte de temps et des risques d'erreurs supplémentaires.

Ce n'est pas très grave et, bien souvent, ces structures clarifient votre code, mais si vous avez le choix et qu'elles semblent faire essentiellement la même chose, choisissez celle qui n'implique pas d'envoyer le contrôle ailleurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X