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

C++ Discussion :

Le mot cl� continue en C++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut Le mot cl� continue en C++
    Bonjour

    En terme de bonnes pratiques, est ce que c'est mal d'utiliser le mot cl� continue dans un code c++ ? J'ai un cas ou �a me permettrait de bien r�duire la complexit� cyclomatique, qui rend vite le code illisible dans certains cas.

  2. #2
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Pas de soucis pour utiliser "continue" ou "break".
    Par contre "goto"...

  3. #3
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Avant de l'utiliser, j'aurais tendance � regarder � deux fois si un refactoring ne me permettrait pas de l'�viter (par exemple, en mettant le corps de la boucle dans une fonction) de mani�re agr�able, sinon, je n'aurais pas plus d'�tats d'�me que �a � le faire.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Ce n'est qu'un ressenti personnel, et donc fatalement sujet � d�bat, mais, pour ma part, je suis tout relativement tout aussi allergique � l'utilisation de continue qu'� celle de break lorsque je ne suis pas dans une structure logique switch ... case.

    Maintenant, je vais m'empresser d'ajouter une pr�cision, avant que certains ne se mettent � crier "au scandale"

    Je n'aime pas l'instruction continue, pas plus que je n'aime break en dehors des switch...case ou l'instruction goto.

    Cela ne veut absolument pas dire que je veuille en arriver � en interdire l'utilisation . J'ai beau �tre (actuellement ) responsable de rubrique, qui serais-je pour essayer d'imposer cette vision des choses

    G�n�ralement, ma politique tient principalement sur deux aspects:
    1. la facilit� de relecture de code
    2. la simplicit� de programmation et de mise en oeuvre
    S'il est possible (et "seulement si") d'assurer la facilit� de relecture du code en s'en passant sans pour autant nuire � la facilit� de mise en oeuvre et de programmation, alors, le choix est fait: j'�vite les continue

    S'il devient trop difficile d'assurer la simplicit� de mise en oeuvre et de programmation en s'en passant, et que le code reste, malgr� tout "suffisamment" (c'est un curseur � placer... o� bon te semble ) facile � relire, il semble opportun de faire "contre mauvaise fortune, bon coeur" et d'accepter de d�roger � la r�gle "g�n�rale" qui conseille de les �viter.

    Ceci dit, il est *peut-�tre* �galement int�ressant de se poser la question de savoir si ta fonction n'en fait pas un peu trop, et d'envisager de la factoriser de mani�re plus efficace, ce qui *pourrait peut-�tre* te permettre d'�viter un recours trop intense � continue, en plus de te faciliter la t�che en terme de recherche d'erreurs.

    Je suis d�sol� de donner une r�ponse aussi "g�n�rique" � ta question, mais il me semble impossible d'�tre plus pr�cis, chaque situation devant �tre �valu�e individuellement

    hope it helps

    [EDIT]Grill�... ca m'apprendra � vouloir faire des discours
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    J'ai la m�me r�action que Loic.

    Car, continue et break, c'est comme return, c'est une vieille histoire de SESE (Single Entry, Single Exit) que l'on se traine dans l'inconscient collectif depuis le C.

    Le SESE, cela sert d'abord � assurer une lib�ration d�terministe de ressources. Hors, pour cela, le C++ dispose du RAII (� contrario du C, du Pascal et autres langages pr�-exceptions).

    Certains estiment que le SESE est n�cessaire � rendre une fonction compr�hensible. Foutaises! Si la fonction n'est pas compr�hensible � cause d'une malheureuse interruption, c'est qu'elle est trop complexe. Qu'on la refactorise d'abord pour en extraire autant de parties que n�cessaire (cf ce qu'� dit Loic). Pour une bonne compr�hension et une bonne maintenabilit�, c'est �a qui est important.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Et bien merci pour ces r�ponses d�taill�es !

    Ho ce n'est pas tant qu'elle n'est pas compr�hensible, mais �a rajoute des tas de ifs qui s'imbriquent les uns les autres et �a fera une mauvaise note de mon code au check cyclomatique ^^

    Non ce n'est pas indispensable, et d'ailleurs je vais m'en passer, mais la question m'int�ressait au del� m�me de mon bout de code.

  7. #7
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par jblecanard Voir le message
    Ho ce n'est pas tant qu'elle n'est pas compr�hensible, mais �a rajoute des tas de ifs qui s'imbriquent les uns les autres et �a fera une mauvaise note de mon code au check cyclomatique ^^
    Dans ce cas l�, r��crit le code, ne laisse pas ces ifs. Tu peux donner une id�e de ce � quoi il ressemble, qu'on puisse �tre plus pr�cis ?
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  8. #8
    screetch
    Invit�(e)
    Par d�faut
    il y a quand m�me quelques tr�s mauvais cas d'utilisations

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    do
    {
      if(blablabla) break;
      /* plein de trucs */
      if(dobidouwa) break;
      /* plein de trucs */
    } while(0);
    qui est un vilain goto ecrit de mani�re un peu pompeuse. (break peut aussi etre remplac� par continue)

Discussions similaires

  1. Extraction de mots cl�s
    Par Olive1808 dans le forum Algorithmes et structures de donn�es
    R�ponses: 6
    Dernier message: 01/02/2016, 20h49
  2. [VB6] attendre un événement pour continuer l'exécution
    Par Argonz dans le forum VB 6 et ant�rieur
    R�ponses: 21
    Dernier message: 12/11/2002, 13h08
  3. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    R�ponses: 5
    Dernier message: 30/09/2002, 18h49
  4. Au sujet des mots de passe
    Par FranT dans le forum Langage
    R�ponses: 6
    Dernier message: 17/09/2002, 22h16
  5. [langage] Reconnaissance de mots
    Par Flo. dans le forum Langage
    R�ponses: 2
    Dernier message: 10/08/2002, 23h34

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