IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Les Break dans les boucles


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Par défaut Les Break dans les boucles
    Bonjour à tous,

    Ma question n'est pas comment utiliser les BREAK mais quel en est la performence dans l'utilisation des BREAK dans les boulce de type FOREACH ?

    J'ai souvant entendu que l'utilisation des break dans les boulce de type FOREACH était déconceillé pour une question de performence.

    Merci de m'éclairer la dessus.

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Ha, les break dans les boucles foreach...
    Qu'est-ce qu'on ferait pas pour éviter une boucle do/while. Si mon ancienne prof d'algo voyait ça....
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Par défaut
    Exactement, la première chose qu'on m'a apprise en algo, c'est de ne jamais utiliser de break . Si tu veux faire des itérations personnalisées, va voir du côté du design pattern Iterator...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut
    Citation Envoyé par pc152
    J'ai souvant entendu que l'utilisation des break dans les boulce de type FOREACH était déconceillé pour une question de performence.
    C'est nouveau ça...

    Citation Envoyé par Royd938
    Exactement, la première chose qu'on m'a apprise en algo, c'est de ne jamais utiliser de break
    Ça aussi...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Par défaut
    Maniak il serait bien d'argumenter et pas seulement de mettre deux mots

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut
    Citation Envoyé par pc152
    Maniak il serait bien d'argumenter et pas seulement de mettre deux mots
    Argumenter je veux bien, mais c'est pas moi qui ait le plus à argumenter là.

    Pour break/continue : ça peut rendre les boucles plus claires et éviter des tests inutiles.

    Contre break/continue : la prof d'algo a dit que c'était pas bien.


    Donc question : en quoi est-ce que ce n'est pas bien au juste ? Ce ne sont pas des gotos, et à moins d'avoir des boucles de 2 pages de long, ça n'a que du positif sur la lisibilité.


    Ça fait un peu plus que deux mots là non ? :)
    Mais pour en faire plus, faudrait que je sache au juste ce qui est reproché à break/continue. Là tout de suite ça m'interpelle quelque part.

  7. #7
    Membre éprouvé Avatar de apokrif
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Par défaut
    Citation Envoyé par Maniak
    Donc question : en quoi est-ce que ce n'est pas bien au juste ? Ce ne sont pas des gotos, et à moins d'avoir des boucles de 2 pages de long, ça n'a que du positif sur la lisibilité.
    Je crois que l'objectif est de rassembler toutes les conditions d'arrêt en un seul point (la condition du for ou du while).

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut
    Citation Envoyé par apokrif
    Je crois que l'objectif est de rassembler toutes les conditions d'arrêt en un seul point (la condition du for ou du while).
    Oui justement. Ça c'était la règle du temps où on considérait que des boucles de 10 pages sont vivables. Parce que là, quand il y avait 10 points de sortie, c'était le boxon.

    Vu que depuis la règle est devenue de ne pas faire de boucle de 10 pages, et plus généralement de faire des méthodes courtes et claires, ce n'est plus un problème. Au contraire, persister à n'avoir qu'un point de sortie peut rendre le code plus difficile à lire, avec tests et indentations inutiles, alors qu'un simple break/continue suffirait à simplifier tout ça.
    Et vu que ces boucles tiennent en quelques lignes, aucun risque de se perdre en route.

    C'est comme de persister à faire des tests qui englobent tout le contenu d'une méthode pour ne rien faire si une certaine condition n'est pas remplie, juste pour ne pas mettre un return.
    Si la méthode est longue, complexe et que sortir en cours de route pose des risques, ok, c'est pas une bonne idée. Mais la solution est de découper la méthode, pas de bannir des instructions utiles pour de mauvaises raisons.

Discussions similaires

  1. enlever les slashes devant les apostrophes dans les mails
    Par laurentSc dans le forum Langage
    Réponses: 10
    Dernier message: 16/11/2010, 19h57
  2. Réponses: 3
    Dernier message: 06/08/2009, 18h09
  3. les classes et les templates dans les plugins
    Par asoka13 dans le forum C++
    Réponses: 22
    Dernier message: 24/01/2008, 18h11
  4. Réponses: 4
    Dernier message: 11/09/2006, 17h55
  5. Les polices dans les tables et les requêts
    Par zooffy dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo