J´aimerais simplement savoir, question propreté, du code tel que ( c´est qu´un exemple)...
if(test)
return false;
Sans aucun crochet {} , c´est pratique ou à éviter ?
Merci !
oui c´est pratique.
En gros pour le compilo,
if(test)
return false;
est pareil que
if(test) {
return false;
}
Pour l´organisation c´est toi qui voit...
Merci !
Des fois je met mes if comme ca:
if(test) return false;
du coup quand tu en a plein come ca c´est tres lisible:
if(test) return false;
if(test) return false;
if(test) return false;
if(test) return false;
Mais je recommende ça que dans certains cas.
J´utilise toujours la notation de base
if ( )
{
}
car avec les autres il peut y avoir des problemes :
if ( )
macommande;
Un erreur arrive vite si on veut ajouter une ligne dans le if mais on oublie de mettre des { }
exemple
if ( )
macommande1;
macommande2;
Dans ce cas le programme fera pas ce qui est voulu. C´est une erreur d´inatention qui arrive.
Et pour la notation :
if ( ) macommande;
J´aime pas parcque c´est impossible de tracer pas a pas pour debugger.
C´est ce que j´aime avec le C/C++, plus tu en apprends, plus tu as l´impression que tu sais rien hehehe
.
Merci pour les réponses !
Est-ce qu´on ne pourrait pas dire que c´est simplement une question de priorité ? Par exemple, si `macommande` ne fait rien d´autre que `return false`, on peut alors mettre l´accent sur l´espace et la lisibilité ( beaucoup de {} peuvent rendre le code confus). Or, si `macommande`doit être une fonction ou quelque chose susceptible de se compliquer, on devrait faire les choses de façon sécuritaire et s´en tenir à la notation classique ?
Moi quand j´ai que un resultat apres le if je fait :
if(ca==2)lechien=1;
et si j´ai plusieurs resultats je fait :
if(ca==3)
{
lechien=2;
lechat=3;
}
faire ca je trouve que ca use des lignes et c´est moin isible :
if(ca==2)
{
lechien=1;
}
moi j´utilise le if sans les {} quand je le peux, pour un code plus compact. Mais c´est un choix, je ne pense pas qu´il y aie une méthode meilleure que l´autre.
Par contre, le truc a ne pas oublier : les alinéas ! !
Dans l´exemple de Lapintade, avec
macommande1;
macommande2;
il faut que macommande1; soit plus loin en horizontal que macommande2;
Musashi001 > ta présentation est celle du langage basic
je l´ai effectionné de nombreuses années
mais je me suis fais lyncher par des profs de faire cela... donc j´ai changé, lol !
Je faisais meme :
if ( truc) {commande1;commande2;commande3;}
( je repond parce que c´est pareil en Flash )
Moi je prefere toujours utiliser les crochets avec retour a la ligne :
C´est plus propre, si quelqu´un est amene a editer mon code, et vu que je procede a coup de trace assez souvent, j´ai de toute facon, par defaut cette structure : c´est super rare que je n´ai un if qu´avec un seul set d´instructions
" c´est super rare que je n´ai un if qu´avec un seul set d´instructions"
C´est une des joies de FLASH, comme t´as pas à programmer plein de petites choses ( un truc pour lire ceci, un truc pour parser celà, un truc pour charger ceci, etc.), ça fait moins de test d´erreur à faire.
Juste dans mon lecteur de TGA des if avec une seul instruction, je dois en avoir une dizaine et je pourrais probablement en ajouter pour plus de sécurité. J´en fais peut-être trop ? Et voilà, encore une fois, plus t´en apprends avec le C/C++, plus t´as l´impression que tu sais rien hehe.
Si on parle d´un code claire, utilisse tujours {}
exemple:
//////////////////////////////////////////////////
int mes variables;
float mes variables;
main(){
if(maocondittion){
fait ceci;
}
for(ma condition){
if(ma condition){
fait ceci;
else
fait ceci;
}
}
return 0;
}
/ /////////////////////////////////////////
a chaque fois que tu va imbriquer des boucles ou des condittions, laisse tes espaces, pour savoir quel crochet apartien a quel boucle ou condition, sinon ton code devient un spaggetti illicible, exemple:
//////////////////////////////////////////////////
int mes variables;
float mes variables;
main(){
if(maocondittion){
fait ceci;
}
for(ma condition){
if(ma condition){
fait ceci;
else
fait ceci;
}
}
return 0;
}
/ /////////////////////////////////////////
la on ne voit pas trop la dissference, mais si on est sur un code de 1000 pages, vous allez travailler 1000 fois de plus.
C´est une des regles tres important pour le programmeur, la clarité du code!!!...
bon chance ![]()
bon, je crois que le filtre a lettres de la page web, n´acepte pas les espaces.....
il faudrait chercher sur un outre site web....
va sur http://www.developpez.com/ sur la rubique C/C++, il y a des conseils et de tips concernant l´ecriture d´un bon code...
Ouais, le forum de jv.com est une vraie plaie pour le formattage du texte. D´ailleurs, en terme de features, il est en retard sur beaucoup de boards ( aucune possibilité pour éditer tes messages après soumission, aucun `sticky` qui reste en haut de la liste des topics -ça aurait été très très utile ici-, etc.).
Je l´aime bien quand même, ne serait-ce que pour les quelques personnes ressources qui le visite et que je respecte ( ça facilite l´obtention d´une réponse quand j´ai une question et ça explique pourquoi je reste ici hehe - désolé, je raconte ma vie là
) .
Pour revenir sur la propreté en C/C++...
est-ce que c´est vraiment plus propre de faire, par exemple,
if(test){
instructions
}
que
if(test)
{
instructions
}
?
Personnellement, j´aime bien la 2e façon de faire, les accolades d´ouverture et de fermeture étant toutes les deux au même niveau horizontal, ça me donne l´impression d´avoir redigé un bloc de code et ça facilite ma relecture. Mais c´est peut-être juste moi... ?
" ta présentation est celle du langage basic je l´ai effectionné de nombreuses années mais je me suis fais lyncher par des profs de faire cela... donc j´ai changé, lol !
Je faisais meme :
if ( truc) {commande1;commande2;commande3;}"
lol je savais pas! Je me souviens bien du basic version calculatrice ou je faisais ça aussi, sauf qu´il y avait pas la place sur toute la ligne du coup je mettait une ligne plus bas!
Mais j´en connais, qui sont des spécialistes de code illisible, toutes les instructions la suite..
Vraiment n´importe quoi lol!
pour chaque: condition, boucle, fonction, object t´as becoin des accolades
si par exemple ton code est rendu a une boucle while, for ou do while, t´auras des erreurs de syntaxes, car, la boucle il faut l´envermer entre eccolades EX:
/ *la librairie que j´ai becoin pour mes fonctions*/
/ *declaration des variables*/
int: int1=0, int2=0;
/ *mon programme principal*/
main()
/ *ma boucle " TAN QUE"*/
do
cout<<"bonjour entrez 2 chiffres :";
cin>>int1>>int2;
cout>>"La somme des 2 chiffres est: " >>int1+int2;
while ( (int1+int2) > = 0 and ( int1+int2) < = 100)
/ *on returne 0 au compi puir dire que tout est ok*/
return0;
alors ici, j´ai un petit programme avec une boucle do while(tanque) qui prend en charge 2 chifrres les aditiones et affiche la somme, il va repetter la meme chose tanque ma somme soit entre 0 et 100.
mon code est parfait, oui mais ma sintaxe elle pas bonne, j´ai pas mis des accolades, ce qui veut dire, que le programme recconaitra pas mon programme principal, main, si j´ai des fonction externes au programme, il ne le reconnaitras pas non plus, et ma boucle faira juste un tour.
les accolles c´est toujour obligatoir dans:
le main principal, les fonctions, les classes(avec eritage ou sans) mais pas dans les simples conditions, telque if, else. Tu peux les mettre si tu veux(fortement recommendé), car quand ton code deviens plus abstrait il devient plus illicible et c´est bon d´avoir une bonne abitude de programmation.
Et n´oublie pas de faire une tabulation TAB chaque fois que tu imbrique une condition dans une boucle, ou chaque fois que tu imbrique queque chose dans quelque chose, c´est ultra clair et ca fait du bien quand on est en train de code notre premier jeux, on se perd jamais.... ![]()
bon chance...
et pour celui qui parlait du basic, ce-ci, n´est pas du Basic, c´est du Advancic
, c´est du C++ avec une estructure procedurale(puisqu´il n´y a pas des clases...)
bon sans, j´ai pas repondu a ta question lol.
enfait
les 2 metodes que tu mentionne sont bonnes..
ca depend celle que t´aime le plus, ou la plus facile pour toi.
ben plus important encore que choises entre ces 2 metodes la, c´est de faire la tabulation chaque fois que t´imbrique une condition dans une boucle, ou une boucle dans une outre boucle...
je ne sais pas si je me suis fait comprendre?
A+....
Ouep, sans problème ( je débute en C/C++ mais j´ai quand même un minimum d´expérience - mes questions semblent idiotes simplement parce que ce sont des concepts de propreté du code sur lesquels je ne me suis jamais vraiment penché,
) . Merci pour tes réponses !
Perso j´aime bien le code lisible et aeré.
Certains aime les code compacts, mais je trouve que c´est moins lisible.
De plus un bon programmeur de faire jamais des fonctions de 1000 kilometres ( une bonne fonction est une fonction de 200 lignes approx). Quand vous avez des grosses fonctions, faut les decouper ( pour que ce soit plus facile a tester et a maitriser).
aprés, mettre
if ( ) {
}
ou
if ( )
{
}
C´est pareil . .. ( j´utilise la seconde).
Au final c´est vrai que ca prends de la place, mais je travaille bien plus vite comme ca ( relecture, debuggage, recomprendre le code 3 mois apres)
Des deux, moi aussi je prefere le deuxieme.
Les signes, virgules, espaces, etc... le compilateur enleve tout ca tout avant de compiler.
Et concernant les decoupage des fonctions, ca marche a 100%, il faut le faire comment ca puisque sinon devient plus difficile de gerer tous les problemes d´un cuop. L´Empereur de rome a toujour dit, divisser pour regner. C´est mieux de s´attaquer aun gros problemme en le decoupant, quan le faisant d´un coup...
Divisser pour reigner....