Aujourd'hui, un de mes collègues m'a suggéré de refactoriser mon code afin d'utiliser une instruction label pour contrôler le flux dans deux boucles imbriquées que j'avais créées. Je ne les ai jamais utilisées auparavant car, personnellement, je pense qu'elles diminuent la lisibilité d'un programme. Je suis disposé à changer d'avis sur leur utilisation si l'argument est suffisamment solide cependant. Quelles sont les opinions des gens sur les déclarations de l'étiquette?
Réponses
Trop de publicités?De nombreux algorithmes sont exprimés plus facilement si vous pouvez sauter à travers les deux boucles (ou une boucle contenant une instruction switch). Ne vous sentez pas mal à ce sujet. D'autre part, il peut indiquer une trop grande complexité de la solution. Afin de prendre du recul et de regarder le problème.
Certaines personnes préfèrent parler "d'une seule entrée, une seule sortie approche à toutes les boucles. C'est-à-dire en évitant la rupture (et continue) et de retour anticipé pour les boucles tout à fait. Il peut en résulter de code dupliqué.
Ce que je vais éviter de le faire est d'introduire auxiliaire variables. Masquage de flux de contrôle au sein de l'état ajoute à la confusion.
Le fractionnement marqué boucles en deux méthodes peuvent être difficiles. Les Exceptions sont probablement trop lourd. Essayez une seule entrée, une seule sortie approche.
Suite à des étiquettes comme goto: de les Utiliser avec parcimonie, et seulement quand ils font de votre code plus compréhensible et plus rapide,
par exemple, Si vous êtes dans les grandes boucles de six niveaux de profondeur et que vous rencontrez une condition qui rend le reste de la boucle inutile pour terminer, il n'y a aucun sens à avoir 6 piège supplémentaire des portes dans vos instructions de condition pour sortir de la boucle au début.
goto ne sont pas mal, c'est juste que parfois les gens les utilisent dans de mauvaises manières. La même chose pourrait être dite pour les étiquettes.
Il y a peu d'occasions où vous avez besoin d'étiquettes et elles peuvent être déroutantes car elles sont rarement utilisées. Cependant, si vous devez en utiliser un, utilisez-en un.
BTW: cela compile et s'exécute.
class MyFirstJavaProg {
public static void main(String args[]) {
http://www.javacoffeebreak.com/java101/java101.html
System.out.println("Hello World!");
}
}
Je suis curieux d'entendre quelle est votre alternative aux étiquettes. Je pense que cela va en gros se résumer à l'argument "retour le plus tôt possible" par rapport à "utiliser une variable pour conserver la valeur de retour et ne revenir qu'à la fin".
Les étiquettes sont assez standard lorsque vous avez des boucles imbriquées. La seule façon de réellement réduire la lisibilité est lorsqu'un autre développeur ne les a jamais vus auparavant et ne comprend pas ce qu'ils veulent dire.
Je pense qu'avec la nouvelle boucle for-each, l'étiquette peut être très claire.
Par exemple:
sentence: for(final Sentence sentence: paragraph) {
for(final String word: sentence) {
// do something
continue sentence;
}
}
Je pense que cela semble très clair en ayant votre étiquette identique à votre variable dans la nouvelle pour-chacun. En fait, peut-être que Java devrait faire le mal et ajouter des étiquettes implicites pour chaque variable heh