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.
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.
Pas de soucis pour utiliser "continue" ou "break".
Par contre "goto"...
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.
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:
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
- la facilit� de relecture de code
- la simplicit� de programmation et de mise en oeuvre
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
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...
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.
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.
il y a quand m�me quelques tr�s mauvais cas d'utilisations
qui est un vilain goto ecrit de mani�re un peu pompeuse. (break peut aussi etre remplac� par continue)
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);
Partager