TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
Publicité
). Le nom de ZString , pour Zéro-String, a été choisi.
Désolé, les commentaires de cette news sont désactivés, vous ne pouvez pas en ajouter !
| Page : Précédente 1 2 | |
| Pseudo | Commentaire |
|---|---|
| 1 visiteur sur cette news (0 membre et 1 anonyme) | |
| Page : Précédente 1 2 | |
SpyBen
|
# Posté le 26/03/2008 12:48:28 |
Noob Spotted !!![]() Groupe : Membres |
C'est cool! Par contre va falloir que je m'y mette (fainéant
) |
KWAL01
|
# Posté le 26/03/2008 13:42:18 |
Maitre KAY pour vous servir ;)![]() Groupe : Membres |
je plussoi le chapitre prochain sur linux
![]() sinon ca va saigner non je rigole. en tout cas j'applaudis la regularite des news et des cours/tp sans parler de leur diversité |
[R]
|
# Posté le 26/03/2008 17:00:16 |
|
Groupe : Membres |
Bonjour,
C'est pas mal, mais il y a quand même quelques détails un peu ennuyeux. Déjà ça : Citation : mateo21 La classe "string" de la bibliothèque standard est un mauvais exemple à ne pas suivre ![]() Même avec le smile, ça choque un peu. ![]() Le mieux à mon sens aurait été d'utiliser un espace de nom. string existe déjà, mais pas SDZ::string. Je remarque également que beaucoup de tes int sont en fait des unsigned int. Des fonctions qui sont conceptuellement const ne le sont pas dans ton code. Même si tu le précises en conclusion, je ne pense pas que ce soit une bonne idée de laisser un code pas aussi propre qu'il pourrait être. Ex : ZString longueur(const char *chaine); Cette méthode n'est pas à sa place. Déjà, elle devrait être remplacée par cstring::strlen. Ensuite, elle devrait être privée SI elle n'a d'utilité que pour la classe elle-même. Mais il faut que cette classe chaine dispose d'une méthode qui donne sa taille. Il faut donc une fonction ZString::longueur() const; (sans paramètre donc). Un accesseur en lecture est à 99 % du temps const. Et d'ailleurs, les get... c'est plutôt l'usage en java, en c++ c'est plus souvent ...() (je préfère perso, c'est moins lourds et tout aussi parlant). ZString::copie devrait être privé. Le constructeur par recopie est là pour ce genre de problématique. ZString::afficher ne devrait pas être présent. Ca lie inutilement ZString à iostream. Il n'est pas plus long d'écrire : ZString str = "abc"; std::cout << str.getChaine(); Que : ZString str = "abc"; str.afficher(); De plus, comment fais-tu pour écrire sur std::cerr ? Tu ne peux pas passer par ZString::afficher. En règle générale d'ailleurs, tu devrais à mon avis éviter les using namespace std;. Ca encombre l'espace de nom global. Et gagner 5 caractères en remplaçant std::cout par cout n'a pas un intérêt suffisant pour encombrer l'espace de nom global. En résumé, il y a beaucoup à dire sur ce code. Je ne suis pas certain que tu es choisi un bon sujet de TP : même si ça n'en a pas l'air, écrire une classe chaine est beaucoup plus compliqué qu'il n'y parait de primer abord. Je serais content de te lire si tu réponds à ce post. J'ai écrit ça rapidement, certaines choses sont peut-être discutables. |
M@teo21
|
# Posté le 26/03/2008 17:41:18 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Je suis parfaitement conscient de ces petites imperfections et je les assume pleinement. Je m'attendais à des réponses de ce genre, car le sujet est complexe et obtenir un truc "parfait" aux yeux de tous relève de la mission impossible.
Néanmoins, je pense avoir mené à bien une mission d'ordre pédagogique en écrivant ce tuto. Tu n'as fait en général que relever des erreurs (qui n'en sont pas, c'est juste que ça fait pas trop "best practices" je te l'accorde) qui sont induites par la méthode pédagogique. Il y a par exemple le fait de ne pas avoir mis de méthode constante. Je ne pouvais faire autrement n'ayant pas expliqué ce concept auparavant, mais je rectifie le tir en conclusion en expliquant qu'il faudra améliorer ça. Quant à la méthode afficher, elle n'a pas de sens non plus, sauf que pour mon tuto j'ai besoin d'une méthode d'affichage avant de surcharger le <<. Toi tu ne vois pas le problème de la même manière, tu te dis "il est con, pourquoi il a pas surchargé << de suite ?". Moi je le vois d'une toute autre manière : je conçois l'écriture de manière linéaire de telle sorte que je puisse expliquer au mieux le processus de réflexion qui me permet d'écrire une telle classe. En revanche, j'avais laissé une erreur (le delete[]), cela a été corrigé immédiatement dès que ça m'a été signalé. Je ne prétends pas écrire la classe parfaite pour la gestion des string. C'était pas mon but. J'espère au moins avoir aidé grâce à ce TP beaucoup de gens pour qu'ils comprennent le processus de création d'une classe, le concept "les attributs sont propres à l'objet", etc etc. Techniquement, je suis complètement d'accord avec toutes tes remarques. Je me les étais déjà faites dans ma tête. Pédagogiquement je ne peux pas tout faire et je suis obligé de faire ces compromis. Tu trouveras plus d'informations sur ma façon de concevoir les tutoriels sur cette page : http://www.siteduzero.com/savoirplus.html#tutoriels <tuto etat="redaction" mode="venere" target="c++" /> Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
GoD++
|
# Posté le 26/03/2008 17:44:32 |
|
Groupe : Membres |
Bonjour,
Bon tuto, mais j'ai quand même une petite remarque à faire en ce qui concerne la surcharge de l'opérateur + (et même de == ou != ). çà n'aurait pas été plus intéressant, au lieu de faire un simple copier-coller, de faire : Code : C++ - Afficher / masquer les numéros de ligne
Qu'en pensez-vous? |
total chaos
|
# Posté le 26/03/2008 17:47:21 |
le C++, j'en mange!![]() Groupe : Bannis |
Citation : GoD++
Bonjour, ça s'appelle du vol, ce que tu viens de faire! j'ai signalé ça avant toi: http://www.siteduzero.com/tuto-50-28807.html ( c'est peut etre le hasard!)Bon tuto, mais j'ai quand même une petite remarque à faire en ce qui concerne la surcharge de l'opérateur + (et même de == ou != ). çà n'aurait pas été plus intéressant, au lieu de faire un simple copier-coller, de faire : Code : C++ - Afficher / masquer les numéros de ligne
Qu'en pensez-vous? |
TheDead Master
|
# Posté le 26/03/2008 18:22:24 |
4 8 15 16 23 42![]() Groupe : Membres |
Citation : total chaos
ça s'appelle du vol, ce que tu viens de faire! j'ai signalé ça avant toi Faut pas abuser non plus, c'est pas parce qu'il a eu la même idée que toi qu'il t'as forcément "volé" ton post. Surtout que c'est même pas la même fonction :\ Mon moteur de template : SimpleTemplate Comité de lutte contre le langage sms et les fautes volontaires sur Internet. |
GoD++
|
# Posté le 26/03/2008 18:23:14 |
|
Groupe : Membres |
sorry! pas fait exprès!
![]() |
[R]
|
# Posté le 26/03/2008 18:34:47 |
|
Groupe : Membres |
Citation : M@teo21
Je suis parfaitement conscient de ces petites imperfections et je les assume pleinement. Je m'attendais à des réponses de ce genre, car le sujet est complexe et obtenir un truc "parfait" aux yeux de tous relève de la mission impossible. Je m'attendais également à une réponse de ce genre. ![]() Citation Néanmoins, je pense avoir mené à bien une mission d'ordre pédagogique en écrivant ce tuto. [...] je conçois l'écriture de manière linéaire de telle sorte que je puisse expliquer au mieux le processus de réflexion qui me permet d'écrire une telle classe. Il est vrai que l'aspect pédagogique (et le public visé) rende l'exercice très difficile, pour ne pas dire impossible. Citation Je ne prétends pas écrire la classe parfaite pour la gestion des string. C'était pas mon but. J'espère au moins avoir aidé grâce à ce TP beaucoup de gens pour qu'ils comprennent le processus de création d'une classe, le concept "les attributs sont propres à l'objet", etc etc. Je n'avais pas vu le problème via cet angle. Ta démarche est effectivement cohérente. Citation Techniquement, je suis complètement d'accord avec toutes tes remarques. Je me les étais déjà faites dans ma tête. Pédagogiquement je ne peux pas tout faire et je suis obligé de faire ces compromis. Il y a juste un "détail" que tu pourrais corriger tout en restant pédagogique : using namespace std. cout tout seul, ce n'est pas une bonne pratique selon moi. Et expliquer le pourquoi du comment de manière pédagogique et accessible, moi je n'en serai pas capable, mais toi si. Les méthodes qui sont publiques alors qu'elle devrait être privées, tu pourrais améliorer ceci, non ? |
M@teo21
|
# Posté le 26/03/2008 18:51:08 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Pour ces points là c'est effectivement améliorable, j'essaierai de m'en occuper en fin de semaine si j'ai le temps
![]() Pour les méthodes privées, je le signalerai probablement à la fin pour ne pas surcharger mes explications dans le fil du tuto. <tuto etat="redaction" mode="venere" target="c++" /> Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
total chaos
|
# Posté le 26/03/2008 18:54:15 |
le C++, j'en mange!![]() Groupe : Bannis |
Citation : GoD++
sorry! pas fait exprès! pas grave, j'ai pas dit ça dot le but de t'offenser. hein?;![]() |
total chaos
|
# Posté le 26/03/2008 18:54:54 |
le C++, j'en mange!![]() Groupe : Bannis |
autre truc amliorable: aulieu de faire deux constructeur comme ça:
Code : C++ - Afficher / masquer les numéros de ligne
tu peux faire comme ça : Code : C++ - Afficher / masquer les numéros de ligne
afin de revoir les param facultatifs! |
Mackila
|
# Posté le 26/03/2008 19:26:48 |
Gorille bourré![]() |
Citation
D'autre part, on bénéficie des outils puissants du C++ comme la surcharge des opérateurs. Cela nous permet d'écrire des choses intuitives comme : Code : C++ - Afficher / masquer les numéros de ligne
Non. Tu n'écriras jamais string maChaine = "Bonjour " + nom; en C++. Ne pas écrire des choses dans les règles de l'art pour simplifier la compréhension pour le lecteur, OK, écrire des choses fausse, c'est moins bien :P ![]() |
DHKold
|
# Posté le 26/03/2008 23:54:03 |
Ex-Admin![]() Groupe : Membres |
Sauf s'il surcharge l'operator+ global
![]() Edit: / |
M@teo21
|
# Posté le 26/03/2008 23:57:12 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Citation : Mackila
Citation D'autre part, on bénéficie des outils puissants du C++ comme la surcharge des opérateurs. Cela nous permet d'écrire des choses intuitives comme : Code : C++ - Afficher / masquer les numéros de ligne
Non. Tu n'écriras jamais string maChaine = "Bonjour " + nom; en C++. Ne pas écrire des choses dans les règles de l'art pour simplifier la compréhension pour le lecteur, OK, écrire des choses fausse, c'est moins bien :P Ooops, personne ne l'avait vue celle-là non plus. C'est vicieux faut dire ![]() Merci je corrige dans la minute. <tuto etat="redaction" mode="venere" target="c++" /> Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
DHKold
|
# Posté le 27/03/2008 00:00:27 |
Ex-Admin![]() Groupe : Membres |
Je suppose que tu as vu mon commentaire concernant l'auto-affectation. Etant donné que c'est quelque chose qui revient quasiment tout le temps dans la création de classe, ne serait-il pas intéressant de le signaler, si pas directement dans le TP, en commentaire à la fin? Ca peut vraiment pourrir la vie ce genre de chose
![]() |
M@teo21
|
# Posté le 27/03/2008 00:01:41 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Euh non j'ai dû zapper je vais lire. Je pense que ça peut se mentionner sans problème vers la conclusion, par contre en milieu de tuto si c'est un détail un peu délicat je préfèrerai éviter.
<tuto etat="redaction" mode="venere" target="c++" /> Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
jarod01
|
# Posté le 27/03/2008 19:39:39 |
|
Groupe : Membres |
un tres bon tp, bravo pour ce choix
|
Layus
|
# Posté le 30/03/2008 12:45:29 |
|
!? encore un Layus... Groupe : Membres |
Coucou,
Un message un peu en retard... (il faut m'excuser, j'étais en vacances) Je suis fort étonné que le constructeur de copie fasse appel à la méthode "longueur()" dans ce code : Citation : Code : C++ - Afficher / masquer les numéros de ligne
Ne serait-il pas plus simple de faire: Code : C++ - Afficher / masquer les numéros de ligne
ou alors j'ai loupé une marche... encore merci pour les tutos... nihil sum... |
M@teo21
|
# Posté le 30/03/2008 15:50:08 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
C'est corrigé merci.
<tuto etat="redaction" mode="venere" target="c++" /> Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
lmghs
|
# Posté le 31/03/2008 21:55:51 |
|
Groupe : Membres |
Citation : DHKold
Je suppose que tu as vu mon commentaire concernant l'auto-affectation. Etant donné que c'est quelque chose qui revient quasiment tout le temps dans la création de classe, ne serait-il pas intéressant de le signaler, si pas directement dans le TP, en commentaire à la fin? Ca peut vraiment pourrir la vie ce genre de chose ![]() J'interviens ici, je viens d'en parler dans les commentaires du tuto. Il y a effectivement une (deux avec la copie) erreur(s) dans l'opérateur d'affectation, mais pas le test pour contrer l'auto-affectation. (Je l'ai même félicité de ne pas être tombé dans ce piège :P) Ce test est un contre idiome qui résout un problème qui a moins de chances de se produire que l'autre problème qu'il ne résoud pas (exception-safety), et en plus cette approche est pessimiste. Je t'invite à consulter la FAQ C++ de developpez, ou de faire des recherches ici, sur developpez, ou sur fclc++. |
DHKold
|
# Posté le 01/04/2008 00:20:49 |
Ex-Admin![]() Groupe : Membres |
Ah bah merci de me le faire remarquer, je viens de lire le point dans la FAQ de developpez
Très intéressant, et ça montre que ce qu'on apprend en cours n'est pas toujours efficace ![]() |
lmghs
|
# Posté le 01/04/2008 03:12:54 |
|
Groupe : Membres |
"A jour" serait plus juste
![]() |
Désolé, les commentaires de cette news sont désactivés, vous ne pouvez pas en ajouter !
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
Fil RSS |
XHTML 1.0 |
CSS 2.0
Édité par Simple IT SARL :
Nous contacter
| Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
87 Zéros connectés |
6 requêtes |
0.3429s (0.3307s)

