Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1815 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Code brut ou commenté?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Code brut ou commenté?

n°373666
eraser17
Posté le 28-04-2003 à 01:19:32  profilanswer
 

je doit rendre un projet sur un prog que j'ai fait, pour mettre dans le dossier vaux mieux mettre un commentaire partie par partie en decomposant le prog et mettre le code sans commentaire a part ou alors c mieux d'integrer les commentaires au code?

mood
Publicité
Posté le 28-04-2003 à 01:19:32  profilanswer
 

n°373686
Taz
bisounours-codeur
Posté le 28-04-2003 à 07:42:47  profilanswer
 

et bienton commentaire de projet est une chose, le commentaire du code est une autre chose. pour ton commentaire de code, commente dans tes .h tes prototypes  pour expliquer l'utilité de tes fonctions: il y a d'ailleurs des logiciels pour générer de la documentation à partir de ce genre de commentaire. dans ton code source, normalement il doit etre lisible, et ne doit donc pas avoir besoin de trop de commentaire: mets en par exemple pour delimiter les grandes parties de tes algorithmes, les passages ou tu utilises des petites astuces. Si tu retrouves avec des tas de commentaires dans ton code source, c'est que ton code est pourri car illisible.

n°373690
MagicBuzz
Posté le 28-04-2003 à 08:19:08  profilanswer
 

Arf, j'ai un collègue il est ouf.
 
Chaque fois qu'il écrit une fonction, il la recopie, il la met en commentaires et rajoute des kilomètres de commentaires :D
 
Comment ça il a une version avec 10 lignes de commentaires par ligne de code, puis en dessous la version non commentée :D

n°374062
eraser17
Posté le 28-04-2003 à 11:35:50  profilanswer
 

niveau commentaire j'ai a peu près ca comme proportion, je pense pas que ca soit encore trop illisible
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5. #define EOL '\n'
  6. #define X 18.9
  7. #define Y 20   //distances centre à centre selon les axes
  8. #define angle 1.9548  // angle entre les axes
  9. #define N 64
  10. #define w 14
  11. /*definit la structure digramme qui contient toute les combinaisons possible de deux touches du clavier
  12. crée a partir des matrice que le programme Typespeed nous a fourni*/
  13. struct digram {
  14. char touche1[10];
  15. char touche2[10];
  16. char a;
  17. char b;
  18. int doigt1;
  19. int doigt2;
  20. int frequence;
  21. float temps;
  22. double distance;
  23. int test1;
  24. int test2;
  25. double logar;
  26. };
  27. /*definit toutes les touches du clavier par ces caracteristique physique c'est a dire son positionement
  28. ainsi que le doigt et la main qui lui sont affectée pour la frappe. matrice crée a partir des fichier texte
  29. definit pour chaque clavier*/
  30. struct touche
  31. {
  32. char caractere;
  33. int main;
  34. int doigt;
  35. int colonne;
  36. int ligne;
  37. int shift;
  38. };
  39. /*construite a partir des textes que l'ont donne a analyser cette structure contient tout le texte
  40. decomposé en une serie de digramme*/
  41. struct texte
  42. {
  43. char a;
  44. char b;
  45. };
  46. /*declaration de toute les fonctions qui vont etre utilisées dans le programme*/
  47. //lit les matrices des temps et frequence
  48. void lecture (struct digram tab[],char nom_fich[],char nom_fich1[]);
  49.  
  50. //attribue les caracteres aux touches du clavier
  51. void analyseclavier (struct touche clavier[],char nom_fich[]);
  52. //attribue les caract aux touches du clavier
  53. int analyse (struct touche clavier[],char nom_fich[],int i,int shift);
  54. //calcule les distances inter-touches
  55. void calculdist (struct touche clavier[],struct digram digramme[],char nom_fich[]);
  56. //affiche ou enregistre les resultats dans un fichier texte
  57. void affichage (struct digram digramme[],char nom_resultat[10],int g, int f,int d1,int d2, double Fitts_a[9][9], double Fitts_b[9][9], char controle1[20]); 
  58. //calcul la regression lineaire
  59. void linreg(int n,double * x, double * y,double * a0, double * a1, double * rs); 
  60. //enregistre les coefficient de fitts dans un fichier
  61. void affiche_Fitts(double Fitts_a[9][9], double Fitts_b[9][9], char nom_coeff[]);
  62. //decompose le texte en digramme
  63. void analysetexte(struct touche clavier [], double Fitts_a[9][9], double Fitts_b[9][9],char nom_fich[]);
  64. //calcul la distance absolue entre les touches du clavier  
  65. double distance(struct touche a, struct touche b);
  66. //symetrise la matrice des coefficients de fittz
  67. void symetrise(double Fitts_a[9][9], double Fitts_b[9][9]);
  68. //attribue les caracteristique physique de position a chaque caractere du clavier
  69. void attribution (struct touche clavier[], int i,int t, int m, int d, char c,int shift,int l);
  70. void main ()
  71. {
  72. int n=4,d1=1,d2=1,i,j;
  73. char nom_data[10];
  74. char nom_data1[10];
  75. char nom_clavier[20]="azerty";

n°374067
nero27
Posté le 28-04-2003 à 11:39:06  profilanswer
 

ça me parait très bien ;)

n°374107
Taz
bisounours-codeur
Posté le 28-04-2003 à 12:01:24  profilanswer
 

la ça commence à faire un peut gros, pourkoi ne pas faire des modules?

n°374112
eraser17
Posté le 28-04-2003 à 12:04:37  profilanswer
 

++Taz a écrit :

la ça commence à faire un peut gros, pourkoi ne pas faire des modules?


 
quand tu dit des modules c'est des .h separé avec les fonction dedans?
 
je connais pas encore trop bien les subtilité de la programation, on a fait ca avec comme seule aide un syllabus intro au langage C  ;)

n°374149
MagicBuzz
Posté le 28-04-2003 à 12:18:27  profilanswer
 

Ca paraît très mal...
 
Exemple de commentaire :
 

Code :
  1. // Type : function
  2. // Name : Add
  3. // Parameters :
  4. //    IN    : long a       First operator.
  5. //            long b       Second operator.
  6. //    OUT   : long retval  Result.
  7. //    INOUT : N/A
  8. // Thrown exceptions : SYSTEM
  9. // Algorythm :
  10. //    Adds a to b and return the result. Raise the system overflow
  11. //    exception if sizeof(a + b) > sizeof(long)
  12. //
  13. // Revision      : 1.0
  14. // Date          : 28/04/2003
  15. // Author        : MagicBuzz
  16. // Modifications : New function
  17. // Tagged by     : /* Rev 1.0 - 28/04/2003 - MagicBuzz */
  18. long Add(long a, long b);


Message édité par MagicBuzz le 28-04-2003 à 12:19:34
n°374163
eraser17
Posté le 28-04-2003 à 12:26:20  profilanswer
 

ca va etre un peu tendu de faire ca , t'a vu le nombre de parametre que prend chaque fonction? en plus elle ne font pas qu'un seul truc souvent c'est des fonction qui font 3 pages.
 
mais c vrai que ca presente beaucoup mieux comme ca.

n°374265
skeye
Posté le 28-04-2003 à 13:50:33  profilanswer
 

MagicBuzz a écrit :

Ca paraît très mal...
 
Exemple de commentaire :
 

Code :
  1. // Type : function
  2. // Name : Add
  3. // Parameters :
  4. //    IN    : long a       First operator.
  5. //            long b       Second operator.
  6. //    OUT   : long retval  Result.
  7. //    INOUT : N/A
  8. // Thrown exceptions : SYSTEM
  9. // Algorythm :
  10. //    Adds a to b and return the result. Raise the system overflow
  11. //    exception if sizeof(a + b) > sizeof(long)
  12. //
  13. // Revision      : 1.0
  14. // Date          : 28/04/2003
  15. // Author        : MagicBuzz
  16. // Modifications : New function
  17. // Tagged by     : /* Rev 1.0 - 28/04/2003 - MagicBuzz */
  18. long Add(long a, long b);




 :sarcastic:  
Ben voyons...si tu mets tout ca pour un "add" j'imagine même pas ce que ca donne sur des fonctions complexes!
Je veux bien croire que dans un contexte pro sur un projet important avec plusieurs développeurs ce genre de commentaires soit le bienvenu, mais là c'est juste un projet scolaire...
Quand ya des moustiques chez toi tu les chasses au lance-flammes toi non? [:timour]
 
[edit] faute de frappe.


Message édité par skeye le 28-04-2003 à 13:51:34
mood
Publicité
Posté le 28-04-2003 à 13:50:33  profilanswer
 

n°374284
Taz
bisounours-codeur
Posté le 28-04-2003 à 13:57:03  profilanswer
 

Citation :

if sizeof(a + b) > sizeof(long)

 :heink:

n°374441
MagicBuzz
Posté le 28-04-2003 à 15:02:19  profilanswer
 

c juste pour faire joli :na:

n°374565
Taz
bisounours-codeur
Posté le 28-04-2003 à 15:33:16  profilanswer
 

c'est surtout du code mort
 
tu ferais mieux d'ecrire  
 
if 4<4

n°374626
tanguy
Posté le 28-04-2003 à 15:48:08  profilanswer
 

Javadoc ca vous dit quelque chose ?
 
Ah oui c'est vrai, pour Java !
 
Ba non, pas tout a fait:
 
http://doxygen.org
logiciel libre, pour C, C++, Java, PHP, sous UNIX et Windows, genere PDF, HTML, XML, LaTeX, RTF...
tout est personnalisable dans un simple fichier de conf que l'on peut editer avec interface graphique.
 
Mais que demande le peuple? Ah oui un exemple :D
 

Code :
  1. /**
  2. * encapsulate a graph
  3. *
  4. * @see Graph#_graph
  5. */
  6. class Graph {
  7. public:
  8. /**
  9.  * @param filename name of the file where there is the description of the graph we want to study
  10.  * @exception invalid_argument the name of the file is incorrect
  11.  * @exception out_of_range the data int the file are incorrect
  12.  */
  13. Graph(string filename) throw (invalid_argument, out_of_range);
  14. /**
  15.  * @param size number of lines in the graph matrix
  16.  */
  17. void setSize(unsigned int size) { _size = size; }
  18. /**
  19.  * @return number of lines in the graph matrix
  20.  */
  21. int getSize() const { return _size; }
  22. /**
  23.  * @param nbNodes number of nodes of the graph
  24.  */
  25. void setNbNodes(unsigned int nbNodes) { _nbNodes = nbNodes; }
  26. /**
  27.  * @return number of nodes of the graph
  28.  */
  29. int getNbNodes() const { return _nbNodes; }
  30. /**
  31.  * allow to use the Graph class like a matrix : graph[i][j] for example
  32.  */
  33. const int * operator[] (unsigned int i) const { return _graph[i]; }


 
 
voila ce que ca peut donner ensuite en sortie HTML/XML si on personnalise (Trolltech n'utilise pas Doxygen mais un outil a eux):
http://doc.trolltech.com/3.1/qlabel.html
 
Elle est pas belle la vie grace aux logiciels libres ?
 
Donc comme ca tu te poses plus de question, tu commentes ton code source et tu generes un PDF qui fait office de rapport plus 2-3 pages pour expliquer les idees globalement.
 
Edit:
Ca pete aussi les graphes d'heritage clickable
http://xml.apache.org/xerces-c/api [...] MNode.html
 
il sait aussi faire des graphes clickables a partir des includes des fichiers si on lui demande.


Message édité par tanguy le 28-04-2003 à 16:12:02
n°374663
MagicBuzz
Posté le 28-04-2003 à 15:56:15  profilanswer
 

VS.NET fait ça aussi :
 
/// <summary>
///    Ma super fonction qui est bien
///    <param>
///        <name>toto</nama>
///    </param>
/// ...
/// </summary>
 
Et le compilateur peut te générer un fichier XML direct à partir de ça.
Et si tu utilise l'assistant pour créer tes fonctions, les commentaires s'écrivent tout seuls :p

n°374671
skeye
Posté le 28-04-2003 à 15:58:00  profilanswer
 

MagicBuzz a écrit :

VS.NET fait ça aussi :
 
/// <summary>
///    Ma super fonction qui est bien
///    <param>
///        <name>toto</nama>
///    </param>
/// ...
/// </summary>
 
Et le compilateur peut te générer un fichier XML direct à partir de ça.
Et si tu utilise l'assistant pour créer tes fonctions, les commentaires s'écrivent tout seuls :p


Il est même capable de deviner ce que va faire ta fonction? Trop fort! [:timour]

n°374688
MagicBuzz
Posté le 28-04-2003 à 16:01:30  profilanswer
 

Ben nan, mais dans l'assistant de création des class/fonctions, il te demande le type des paramètres, leurs noms et des commentaires dessus.
 
A partir de là, il te génère directement les balises xml dans les commentaires, ce qui est moins chiant que de se les faire à la main.
 
Sinon, il est capable tout de même de générer des commentaires minimums à partir de l'entête des fonctions :
-> privée, virtual, etc.
-> type de sortie
-> paramètres en entrée
-> override
-> héritage
-> etc.
 
En fait, c'est le compilo qui fait ça, donc à la base ton code n'a plus aucun secret pour lui ;) Y'a juste qu'il va pas savoir quel est l'âge du capitaine quoi...

n°374696
skeye
Posté le 28-04-2003 à 16:02:44  profilanswer
 

MagicBuzz a écrit :

Ben nan, mais dans l'assistant de création des class/fonctions, il te demande le type des paramètres, leurs noms et des commentaires dessus.
 
A partir de là, il te génère directement les balises xml dans les commentaires, ce qui est moins chiant que de se les faire à la main.
 
Sinon, il est capable tout de même de générer des commentaires minimums à partir de l'entête des fonctions :
-> privée, virtual, etc.
-> type de sortie
-> paramètres en entrée
-> override
-> héritage
-> etc.
 
En fait, c'est le compilo qui fait ça, donc à la base ton code n'a plus aucun secret pour lui ;) Y'a juste qu'il va pas savoir quel est l'âge du capitaine quoi...


ok...c'est du javadoc assisté, en fin de compte!

n°374711
MagicBuzz
Posté le 28-04-2003 à 16:06:38  profilanswer
 

Bah ouais, ça revient au même, mais avec possibilité d'automatiser l'écriture des commentaires :)
 
(M$ c'est vraiment les héros des fénéants, c pour ça que j'aime leurs produits :D)

n°374749
tanguy
Posté le 28-04-2003 à 16:17:03  profilanswer
 

MagicBuzz a écrit :


dans l'assistant de création des class/fonctions, il te demande le type des paramètres, leurs noms et des commentaires dessus.
 
A partir de là, il te génère directement les balises xml dans les commentaires


 
Ba comme dans tous les bons IDE depuis longtemps :sarcastic: rien d'exceptionnelle.
 
Perso moi je suis un fervant feneant depuis plusieurs annees :D

n°374763
MagicBuzz
Posté le 28-04-2003 à 16:20:00  profilanswer
 

Ouais mais bon, moi j'aime bien ça :p
 
http://www.manga-torii.com/files/vsnet.png
 
C vachement pratique quand t'as 50 fichiers dans ton projet avec 20 000 fonctions et que tu sais plus qui fait quoi :)

n°374773
Taz
bisounours-codeur
Posté le 28-04-2003 à 16:22:41  profilanswer
 

clair, c'est super lisible avec ce genre de tag. pas comme les mot magique de doxygen et pas la peine de se casser la tete "faut que je mette // ou /** ou ///"

n°374924
tanguy
Posté le 28-04-2003 à 17:22:51  profilanswer
 

MagicBuzz a écrit :

Ouais mais bon, moi j'aime bien ça :p
 
http://www.manga-torii.com/files/vsnet.png
C vachement pratique quand t'as 50 fichiers dans ton projet avec 20 000 fonctions et que tu sais plus qui fait quoi :)


 
Mouais, ca a toujours ete le seul argument valable de Visual a mes yeux (tu m'etonnes avec 10 arguments par fonction dans le SDK :lol:).
Mais je prefere 10x plus avoir le reverse engineering qu'une completion, c'est sans aucune comparaison possible.
En fait, comme je suis une faignasse, j'ai les deux (en Java, pas en C++ ou j'ai pas la completion): la completion et le reverse engineering avec un joli graphe UML (au final la completion je m'en sers jamais).
 
 
 
Pour repondre a Taz, Doxygen il a plusieurs mode de compatibilite (style de commentaire) dont le style Javadoc. Tu choisi celui que tu veux (je suis d'accord, le choix ca a des avantages mais aussi des inconvenients).

n°442423
Willyzekid
Posté le 28-06-2003 à 06:42:54  profilanswer
 

Hop, je fais encore remonter ce topic.
 
Je suis à la recherche de meilleure manière d'utiliser VC++ (.NET). Jusqu'à maintenant j'utilisais doxygen mais pourquoi pas essayer l'outil de Microsoft :D
Problème : je n'arrive pas à générer des commentaires automatiques quand je créé une nouvelle fonction! (ca me cré la fonction et c'est tout!)
 

Citation :


dans l'assistant de création des class/fonctions, il te demande le type des paramètres, leurs noms et des commentaires dessus.  
 
A partir de là, il te génère directement les balises xml dans les commentaires


 
MagicBuzz, comment tu fais ca!!
 
Aussi, quelqu'un sait comment activer AUTOMATIQUEMENT la completion des mots (ie pas besoin de faire un ALT + Fleche droite)...Comme le font la pluspart des autres ide???
 
Merci!


---------------
Horizon pas Net, reste à la buvette!!
n°442629
Willyzekid
Posté le 28-06-2003 à 16:48:37  profilanswer
 

Up! Up!
:bounce:


---------------
Horizon pas Net, reste à la buvette!!
n°442875
Willyzekid
Posté le 28-06-2003 à 23:18:19  profilanswer
 

Up! Up!
:bounce:


---------------
Horizon pas Net, reste à la buvette!!
n°443086
camarchepo​a
m'enfin !
Posté le 29-06-2003 à 14:53:38  profilanswer
 

un petit contre exemple  :p  
 
http://casteyde.christian.free.fr/ [...] c2651.html
 
 
 

Code :
  1. Vous l'aurez compris : il est plus simple de dire ici ce qu'il ne faut pas faire que de dire comment il faut faire. Je ne prétends pas imposer à quiconque une méthodologie quelconque, car chacun est libre de programmer comme il l'entend. En effet, certaines conventions de codages sont aussi absurdes qu'inutiles et elles ont l'inconvénient de ne plaire qu'à celui qui les a écrites (et encore...). C'est pour cette raison que je me suis contenté de lister les sources potentielles d'illisibilité des programmes. Sachez donc simplement que si vous utilisez une des techniques données dans ce paragraphe, vous devriez vous assurer que c'est réellement justifié et revoir votre code. Pour obtenir des programmes lisibles, il faut simplement que chacun y mettre un peu du sien, c'est aussi une marque de politesse envers les autres programmeurs.


Message édité par camarchepoa le 29-06-2003 à 14:55:36
n°443139
Willyzekid
Posté le 29-06-2003 à 17:20:28  profilanswer
 

Willyzekid a écrit :

Hop, je fais encore remonter ce topic.
 
Je suis à la recherche de meilleure manière d'utiliser VC++ (.NET). Jusqu'à maintenant j'utilisais doxygen mais pourquoi pas essayer l'outil de Microsoft :D
Problème : je n'arrive pas à générer des commentaires automatiques quand je créé une nouvelle fonction! (ca me cré la fonction et c'est tout!)
 

Citation :


dans l'assistant de création des class/fonctions, il te demande le type des paramètres, leurs noms et des commentaires dessus.  
 
A partir de là, il te génère directement les balises xml dans les commentaires


 
MagicBuzz, comment tu fais ca!!
 
Aussi, quelqu'un sait comment activer AUTOMATIQUEMENT la completion des mots (ie pas besoin de faire un ALT + Fleche droite)...Comme le font la pluspart des autres ide???
 
Merci!


 
Up up!
(mais de quoi il me parle le monsieur au dessus?!)


---------------
Horizon pas Net, reste à la buvette!!
n°446639
jagstang
Pa Capona ಠ_ಠ
Posté le 02-07-2003 à 17:40:57  profilanswer
 

Tu veux pas aussi que le code completion te tape tout le programme ?
 
La thélépathie sinon

n°446817
Willyzekid
Posté le 02-07-2003 à 19:28:42  profilanswer
 

JagStang a écrit :

Tu veux pas aussi que le code completion te tape tout le programme ?
 
La thélépathie sinon


 
Ben si, gros malin. Je sais pas toi, mais moi taper du code, ca me lourde! Moins j'en tape, mieux c'est.
Or il se trouve que la plupart des IDE (IntelliJ pour n'en citer qu'un) te propose la completion automatique après que tu ais tapé 3 lettres.
Alors, comme je suis un gars un peu intelligent, je me dis, mais pourquoi mon petit VC++ me fait pas ca?
 
Dis moi, tu code sous notepad, toi c'est ca?


---------------
Horizon pas Net, reste à la buvette!!
n°446829
Taz
bisounours-codeur
Posté le 02-07-2003 à 19:47:51  profilanswer
 

à lala, rien ne vos les docstring de python

n°446885
jagstang
Pa Capona ಠ_ಠ
Posté le 02-07-2003 à 21:47:03  profilanswer
 

Je code pas sous notepad. Mais pour moi le code completion rend le programmeur idiot
 
du style en c++
 
this->
 
Et le gars attend 1 seconde, puis prends sa souris... c'est presque ça...  
 
ça aide, mais c'est une aide vicieuse. il faut savoir s'en servir.
 
Sinon je code pas sous notepad, mais sous Borland Builder 6

n°451747
skeye
Posté le 09-07-2003 à 07:34:29  profilanswer
 

JagStang a écrit :

Je code pas sous notepad. Mais pour moi le code completion rend le programmeur idiot
 
du style en c++
 
this->
 
Et le gars attend 1 seconde, puis prends sa souris... c'est presque ça...  

ça aide, mais c'est une aide vicieuse. il faut savoir s'en servir.
 
Sinon je code pas sous notepad, mais sous Borland Builder 6


 :heink:  
Le but du jeu c'est de gagner du temps, pas d'en perdre...je vois pas l'intéret si c'est pour décoller les mains du clavier!!
Et pour moi la complétion ne rend pas idiot, au contraire elle me permet d'utiliser des noms de variables un peu plus long et donc un peu plus clairs sans me faire chier à le retaper intégralement à chaque fois...C'est un plus appréciable autant pendant l'écriture du code que de sa relecture!

n°451810
chrisbk
-
Posté le 09-07-2003 à 09:21:37  profilanswer
 

chi cha rend idiot, on retiens pu rien (param de fonction, nom de variable, majuscule/minuscules....)
 
Mais c trop pratique [:joce]

n°451819
skeye
Posté le 09-07-2003 à 09:29:49  profilanswer
 

chrisbk a écrit :

chi cha me rend idiot


 :o

n°456044
xiluoc
un pc pour les unirs ....
Posté le 12-07-2003 à 13:06:56  profilanswer
 

JagStang a écrit :

Je code pas sous notepad. Mais pour moi le code completion rend le programmeur idiot
 
du style en c++
 
this->
 
Et le gars attend 1 seconde, puis prends sa souris... c'est presque ça...  
 
ça aide, mais c'est une aide vicieuse. il faut savoir s'en servir.
 
Sinon je code pas sous notepad, mais sous Borland Builder 6


1s, jai mis aucun delai  :whistle:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Code brut ou commenté?

 

Sujets relatifs
bout de code en c++ pour controler une carte télé ?Le code postscript d'acrobate distiller version3 / version5
Recherche des exemples de code en C sur les arbresupload depuis code php sur serveur sécurisé ???
[.NET] Protection du codepeut-on mettre du code PHP dans un script JavaScript? et inversement ?
Comment envoyer avec php le code ascii de la touche Entrée ?[PHP] Mon source s'affiche dans la page ! help plz ( code inside )
[VB] impression code sourceProblème : éviter l'exécution prématurée de certaines lignes de code
Plus de sujets relatifs à : Code brut ou commenté?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR