91 votes

L'utilisation d'une pause étiquetée est-elle une bonne pratique en Java ?

Je regarde un vieux code datant de 2001 et je suis tombé sur cette déclaration :

   else {
     do {
       int c = XMLDocumentFragmentScannerImpl.this.scanContent();
       if (c == 60) {
         XMLDocumentFragmentScannerImpl.this.fEntityScanner.scanChar();
         XMLDocumentFragmentScannerImpl.this.setScannerState(1);
         break label913;
       }

Je n'avais jamais vu ça avant, et j'ai découvert des pauses étiquetées ici :

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

Cela ne fonctionne-t-il pas essentiellement comme goto ? Est-ce même une bonne pratique de l'utiliser ? Cela me met mal à l'aise.

1voto

noMAD Points 2697

Ce n'est pas comme un goto dans laquelle vous faites sauter le contrôle de flux en arrière. Une étiquette vous montre simplement (au programmeur) où la rupture s'est produite. En outre, le contrôle du flux est transféré à l'instruction suivante après l'étiquette break .

En ce qui concerne son utilisation, je pense personnellement qu'il n'est pas d'une grande utilité car une fois que vous commencez à écrire du code de plusieurs milliers de lignes, il devient insignifiant. Mais encore une fois, cela dépend du cas d'utilisation.

1voto

Nando Points 11

Je ne pense pas que ce soit mauvais comme le goto. Et il peut être utile, par exemple, dans un scénario où vous avez un interrupteur dans une boucle for.

FOR_STATEMENT:
for (Integer someValue : someIntegerValues) {
    SomeEnum someEnum = analyseSomeIntValueAndReturnSomeEnumResult(someValue);
    switch (someEnum) {
        SOME_ENUM_VALUE:
            //do something
            break; // <- this break will stop de switch evaluation
        SOME_OTHER_ENUM_VALUE:
            //do something
            break FOR_STATEMENT; // <- this break will stop the FOR statement
    }
}

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