bonjour,
Si une ligne logique longue est nécessaire(plus de .. caractères)
peut-on la couper par _
sur l'éditeur.
J'utilise Dev-cpp.
Cela ne fonctionne pas,comment faire?
Solution:"faire autrement" est une réponse.
Mais encore?
Sen.
bonjour,
Si une ligne logique longue est nécessaire(plus de .. caractères)
peut-on la couper par _
sur l'éditeur.
J'utilise Dev-cpp.
Cela ne fonctionne pas,comment faire?
Solution:"faire autrement" est une réponse.
Mais encore?
Sen.
Bonsoir,
Si j'ai bien compris ton problème, tu peux couper une ligne en mettant un antislash (\) juste à la fin de chaque section de ligne.
Attention, il ne doit rien y avoir entre l'antislash et la fin de la ligne, même pas des espaces ou des tabulations.
Ceci dit, tu n'as pas forcément de la couper de cette manière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Une ligne qui commence ici \ et se termine là.
Enfin ça dépend la ligne.
est équivalent à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 int i = 12 * ( toto ( ) - TITI ;
Pourrais-tu nous donner un exemple de ligne, s'il-te-plaît ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part int i = 12 * toto() - TITI;
C'était cette ligne(5) là histoire qu'elle reste dans des limites descentes:_ est en bout de ligne logique que cet éditeur n'accepte pas d'ailleurs ni le mien sous Dev-cpp.
Mais si c'est pour passer à ton exemple je garde ma ligne "longue" et je construirai ma ligne logique autrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for ( int i = 0, size = TblCarDimFlib.size(); i < size; ++i ) {//for string testcol50=TblCarDimFlib[i].substr(49,3); if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || _ testcol50 == lib4 || testcol50 == lib5) {cout<<"|"<<TblCarDimFlib[i]<<"|"<<endl;} }//for
Merci pour cette réponse et attendant une éventuelle autre solution de rédaction.
Sen.
Je mettrai résolu plus tard lundi par exemple()
Steph_ng8 t'as donné la réponse
Ou encore ce qui suit selon ta préférence
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || testcol50 == lib4 || testcol50 == lib5) { ... }
C'est bien plus lisible à mon goût que de couper la ligne par un caractère spécial.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || testcol50 == lib4 || testcol50 == lib5) { ... }
J'avais pas pigé sa réponse!!
C'est super donc résolu!
J E___ P R E N D S !
Merci à vous deux!
Sen.![]()
Salut,
Moi quand je lis :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || _ testcol50 == lib4 || testcol50 == lib5)
je suis aussi perdu dans un cas comme dans l'autre. Je ne comprends pas à la lecture ce que ce test veut dire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || testcol50 == lib4 || testcol50 == lib5)
=> préférer une fonction (éventuellement inline) dont le nom indique clairement l'objectif du test :
isColumnResizeable est un nom que j'ai mis au hasard. Il s'agit juste de souligner qu'il faut bien nommer ces objets et ainsi permettre de lire le code presque comme un texte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 inline bool isColumnResizeable(unsigned num_col_) { switch(num_col_) { case lib1: case lib2: case lib3: case lib4: case lib5: return true; default: return false; } } // puis.. if(isColumnResizeable(testcol50 ) { }
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Je me demande bien pourquoi. C'est de la syntaxe de base du langage.
Dans ce cas là, tu perds l'information de ce qui détermine la valeur du test.
Tu peux considérer que c'est important, et vouloir éviter d'aller voir le contenu de la fonction pour en savoir plus.
En outre, il n'est pas toujours possible de tout regrouper en un nom de fonction suffisamment conçu.
Comment appellerais-tu ta fonction ? needToGoToMall() ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (wantToDoShopping || needToDoShopping || wantToWatchGirls || wantToEatAtHippopotamus) goToMall();
Bof...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (needToGoToMall()) goToMall();
On serait obligé d'aller voir dedans ce qui pourrait te motiver pour aller voir ce qui te motive d'aller au centre commercial.
ouais:l'auteur compare le contenu d'une variable "testcolo50" et le compare à une autre fournie par une "entrée clavier" par exemple cela lui parait simple et lui suffit car facile à relire.Utilser une fonction est satisfaisant, élégant, pédagogique mais je suis pressé.Très débutant en C++ et pressé de finir mon travail je n'entre pas dans les querelles techniques mais lis avec intérêt vos messages
Sen.![]()
En même temps, je n'avais pas explicité la manière dont j'avais découpé ma ligne...
Ce qu'il faut en retenir, c'est que l'on peut couper une ligne entre deux entités lexicales (ou tokens) sans que cela ne pose de problème au compilateur.
Il considère les retours à la ligne comme de simples caractères blancs (ou d'espacement, je ne sais pas exactement...)
Salut,
Alors qu'appeler une fonction n'est pas une base du langage ?
C'est exactement le contraire. Avec une fonction bien nommée tu comprends tout de suite l'objectif du test.
Que veut dire cette ligne ?
Moi, j'en sais rien. Je suis incapable de dire à quoi sert ce code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || testcol50 == lib4 || testcol50 == lib5)
Alors que :
Je n'ai pas besoin de regarder les détails d'implémentation pour comprendre l'objectif du test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (needToGoToMall())
En d'autres termes :
versus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || testcol50 == lib4 || testcol50 == lib5) { my_val = 42; }
Lequel des deux a probablement un bug ? Ben dans le premier cas je suis incapable de le dire sans une analyse poussée et laborieuse ou une palanquée de tests. Dans le second, j'ai tout de suite un gros doute. Et en plus, tu sais quoi : le dernier code peut susciter un doute y compris pour un jeune développeur qui vient d'arriver et ne connait pas encore de trop le code et/ou le métier. Rien qu'en lecture, ça lui met un doute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (needToGoToMall()) { StayInBed(); }
De même, pour l'avoir déjà vu, tu tombes sur :
Plus loin dans le code, là-dessus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || testcol50 == lib4 || testcol50 == lib5)
Erreur ou pas ? Pourquoi ici on ne teste pas avec lib4?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || testcol50 == lib5)
Je rajouterais que needToGoToMall et StayInBed utilisent probablement des termes présents dans la spec client alors que je suis bien persuadé que dans le cahier des charges on ne trouve probablement pas testcol50, libN ou 42.
Très bonne remarque : si tu n'es pas en capacité de nommer un élément de ton programme (condition, fonction, membre, etc....) c'est que tu ne sais pas dire quel est son objectif. Tu n'as pas déterminé à quoi il sert. Ne pas savoir nommer ou nommer avec des mots creux/mots valises, c'est tout simplement avoir un gros problème de design, de confusion des responsabilités, ou d'absence de réflexion sur le périmètre de l'élément mal nommé.
Ca s'appelle séparer les rôles : une fonction a la responsabilité de dire si oui ou non il faut aller au centre commercial, une autre fait un choix d'action en fonction de ce résultat, une troisième réalise l'action, etc... Bien venu dans le monde du développement![]()
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
En industrie,en pro certainement de bonnes remarques.
Mais toutes mes lignes sont documentées bien qu'elles n'apparaissent pas ici.
Testcolo50 teste une colonne n°50
lib1,libn des noms en français sur une ligne de string.
Nul n'est parfait.
Sen.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Je n'ai jamais laissé entendre que ta manière de faire les choses était incompréhensible.
Ça suffit pour comprendre son objectif, mais pas pour comprendre sa nature.
Procédé malhonnête.
Tu prends l'exemple qui effectivement ne porte guère de sémantique, et tu en tires une généralité. J'avais justement présenté un test qui donnait des informations, et que tu escamotes. En revanche, tu prends bien monEncore une fois, tu ne prends pas le bout de code que j'aurais fourni...
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (needToGoToMall())
Tout dépend si tu mets dans une optique de tests de validation, ou si tu veux comprendre ce qu'il se passe...
Ben reprend mon exemple, et dis-moi ce que tu aurais fait...
J'ai l'impression qu'on ne se comprend pas. Mais je préfère largement :
dont je comprend tout de suite l'objectif du test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (needToGoToMall()) goToMall();
à :
dont je dois aller regarder l'action pour comprendre l'objectif du test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (wantToDoShopping || needToDoShopping || wantToWatchGirls || wantToEatAtHippopotamus) goToMall();
Ce qui semble être le contraire de toi si j'en crois ton :
Si je rajoute beeingIll, est-il légitime de faire :
? J'en sais rien. Alors rien qu'en lisant needToGoToMall j'aurais pas envie d'y rajouter beeingIll et j'aurais envie de reformuler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (wantToDoShopping || needToDoShopping || wantToWatchGirls || wantToEatAtHippopotamus || !beeingIll) goToMall();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if (needToGoToMall()) { if(canToGoToMall()) goToMall(); else delegateWife(); }
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Dans ce cas, en quoi-est-ce gênant de regarder une ligne plus bas ?
Mon propos était de dire que ta façon de voir les choses n'est pas universelle.
Il y a des cas où seul l'objectif du test est important, et d'autre où c'est son contenu qui est important.
En gros, mon test veut dire : "OK, soit je peux aller au centre commercial, soit je ne peux pas, mais qu'est-ce qui conditionne cette possibilité ?". Cela m'apparaît en outre toujours plus pénible d'aller voir la définition d'une fonction quand je peux l'éviter. Si tu veux absolument une description concise de l'objectif du test, tu peux toujours rajouter un commentaire.
Et ne me dis pas qu'un code lisible n'a pas besoin de commentaires, car d'autres te répondront qu'un code lisible doit minimiser les redirections superflues dans des fonctions...
Et quelle est la traduction la + proche :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (wantToDoShopping || needToDoShopping || wantToWatchGirls || wantToEatAtHippopotamus)
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (needToGoToMall())
D'ailleurs, si on reprend l'exemple du PO, es-tu capable de dire à quoi sert ce test rien qu'avec ces lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (testcol50 == lib1 || testcol50 == lib2 || testcol50 == lib3 || testcol50 == lib4 || testcol50 == lib5)
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager