IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes Discussion :

la documentation du code


Sujet :

Méthodes

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 256
    Par défaut la documentation du code
    bonjour à tout le monde je voudrais savoir quel sont les règles pour bien documenter son code


    merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Citation Envoyé par adel.87 Voir le message
    bonjour à tout le monde je voudrais savoir quel sont les règles pour bien documenter son code


    merci
    Être clair, précis, uniforme (toujours les mêmes « habitudes ») et ne pas faire de mise en forme qui ne serait pas maintenable facilement.

    Après le reste ça dépend de beaucoup de choses, dont le langage, les outils utilisés et les habitudes d'où tu es.

  3. #3
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    Une des regles que je considere comme primordial, surtout quand on travaille seul :
    - Ecrire les commentaires avant le code. Directement après avoir codé, on a la fausse sensation que tout est compréhensible dans notre code.

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 545
    Par défaut
    Citation Envoyé par Phelim Voir le message
    Une des regles que je considere comme primordial, surtout quand on travaille seul :
    - Ecrire les commentaires avant le code. Directement après avoir codé, on a la fausse sensation que tout est compréhensible dans notre code.
    dans ce cas il ne s'agit pas de commentaires, mais d'analyse ... ce qui n'est pas la même chose

    ce n'est pas parce que l'on a fait une analyse préalable (via UML ou non) qu'il ne faut pas commenter, ces commentaire étant alors dans le code, y compris à l'intérieur du corps des opération/fonctions ce qui dans ce cas ne peut pas être fait avant que celui-ci n'existe

    la seule règle à respecter : que le commentaire ai un sens, qu'il apporte vraiment quelque chose c.a.d. des informations sémantiques et ne soit surtout pas un pseudo code ou une simple reprise de ce qui est écrit dans le langage de prog utilisé. Bref par exemple inutile de dire quels sont les types des arguments d'une opération/fonction, on le voit par ailleurs très bien dans le code, sauf s'il y a une génération automatique de doc utilisant ce genre d'info et n'étant pas capable de le faire à partir du code lui-même.
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Bref par exemple inutile de dire quels sont les types des arguments d'une opération/fonction, on le voit par ailleurs très bien dans le code, sauf s'il y a une génération automatique de doc utilisant ce genre d'info et n'étant pas capable de le faire à partir du code lui-même.
    Tout dépend du langage que tu utilises. En ce moment, je suis en PHP et tu ne définis pas de type de variable que ce soit dans le code ou dans les paramètres de fonctions (si tu ne connais pas le php, ca parait vachement bourrin - d'ailleurs pour faire cette remarque évidente je suis sûr que tu programme dans un langage tel que C++/JAVA). Donc pour comprendre un code que tu as écris, tu peux t'en sortir, mais par exemple, j'utilise un framework et heureusement que les paramètres IN/OUT sont documentés sinon j'aurai perdu un temps fou à comprendre le type de paramètre attendu et d'ailleurs, je n'aurai pas utilisé le framework. Ensuite, comme tu l'as dit, le générateur de documentation s'en sert pour créer la documentation.

  6. #6
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Voici les règles que j'ai forcées dans mon entreprise :

    La documentation des méthodes et classes se fait avec les tags standards pour la génération automatique et la prise en charge de l'intellisense.

    La documentation d'une méthode doit inclure :
    -Un descriptif de son utilité
    -l'utilité de chaque paramètre et l'acceptation ou non de la valeur null.
    -Une documentation des exceptions raisonnablement possibles.

    Pas de préfixage des types primitifs, seuls les composants UI doivent être préfixés.

    Par ailleurs, pour ce qui est de la véritable documentation, celle-ci n'est pas faite dans le code. On tâche de décrire dans des documents à part les solutions utilisées pour répondre aux problématiques métier, quelle manière de travailler on a choisie et pourquoi les autres ne fonctionnaient pas.
    J'aimerai qu'à terme, nous fassions cela sur un wiki.

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    A savoir qu'il existe des scripts qui créé une documentation technique (api) en fonction des commentaires que tu as utilisés dans ton code. Chaque script de documentation (phpdocumentor en php, en java je ne sais plus, etc. pour chaque langage).

    Donc dans un premier temps, regarde quels sont les documentors de code pour ton langage. Si tu utilises un éditeur particulier regarde s'il ne gère pas un de ces outils.

    Suivant le type de documentor que tu utilises la syntaxe des commentaires va changer. Par exemple pour décrire une classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /**
      * Nom de classe
      *
      * Description
      *
      * @version 1.0
      * @author Moi
      * @package ...
      * @copyright ...
      */
    C'est un exemple avec phpDocumentor mais tu n'es pas obligé de mettre toutes les variables @.

    Idem pour chaque variable que tu déclares dans une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        /**
         * Decorators for rendering
         * @var array
         */
        protected $_decorators = array();
    Et le plus important (à mon sens), c'est la documentation des fonctions ou tu indiques clairement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        /**
         * Description de la fonction
         * 
         * @param  array $options description du paramètre d'entrée
         * @return booléen description de la variable de retour
         */
        public function setOptions(array $options)
    Voilà, en gros si tu documentes tes classes, fonctions et variables de classes de cette façon, c'est extraordinaire.

    Le reste, c'est du bon sens : une bonne arborescence des répertoires sur ton disque, des noms de fonctions/variables/classe clair. Par exemple, je mets toujours le type d'un attribut devant une variable : str_string, dt_date, tab_tableau, table_table... Idem pour les fonctions : les selecteurs commencent par SetNom(), etc, Get(), Is_Fct (une fonction qui retourne 1 ou 0)...C'est plus long à écrire mais quand tu repasses sur ton code, c'est plus facile à comprendre. Bien-sûr il faut bien indenter ton code avec la touche TAB, et mettre des commentaires (par exemple je commence toujours mes commentaires par //-- comment --//. De cette façon si j'ai récupéré du code, je vois tout de suite ce que j'ai commenté des commentaires existants).. Tu remarqueras que dans l'exemple ci-dessus, je préfixe mais attributs privés ou protégés par un underscore '_'. Bon souvent ça ne me sert pas à grand chose car le code que j'écris est très court.

    Voilà, c'est ma façon de garder un code propre. Il n'y a pas vraiment de règle, mais tu as bien raison de te poser cette question. Ne jamais oublier qu'un autre codeur devra certainement utiliser tes classes, il faudra trouver facilement le type de paramètre d'entrée d'une fonction, les variables privés...

  8. #8
    Membre éprouvé Avatar de SaintAmand
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Par défaut
    Pour compléter ce qui a été écrit précédemment:
    - Eviter de paraphraser le code: du genre le très classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i++; /* Incrémente i de 1
    - Si vous utilisez un algorithme particulier (recherche de motif, ...), l'indiqué. Ajouter une référence vers un article ou un livre, si cet algorithme n'est pas censé être connu de ceux qui auront à vous lire.
    - Les commentaires dans le coeur même du code son rarement nécessaire. Si cela vous parait le cas, alors il est probable que le code n'est pas propre ou utilise des «astuces». Dans ce cas mieux vaut réécrire ce code et éviter ces astuces qui ne servent qu'à satisfaire l'égo du développeur (sauf cas particulier bien entendu).
    - Ecrire des tests unitaires. En autres, ils constituent une source de documentation inestimable puisqu'ils montrent comment utiliser votre code.
    - Utiliser des outils de génération de documentation comme Doxygen, PerlDoc, ...

  9. #9
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Par défaut
    Citation Envoyé par SaintAmand Voir le message
    Pour compléter ce qui a été écrit précédemment:
    - Eviter de paraphraser le code: du genre le très classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i++; /* Incrémente i de 1
    - Si vous utilisez un algorithme particulier (recherche de motif, ...), l'indiqué. Ajouter une référence vers un article ou un livre, si cet algorithme n'est pas censé être connu de ceux qui auront à vous lire.
    - Les commentaires dans le coeur même du code son rarement nécessaire. Si cela vous parait le cas, alors il est probable que le code n'est pas propre ou utilise des «astuces». Dans ce cas mieux vaut réécrire ce code et éviter ces astuces qui ne servent qu'à satisfaire l'égo du développeur (sauf cas particulier bien entendu).
    - Ecrire des tests unitaires. En autres, ils constituent une source de documentation inestimable puisqu'ils montrent comment utiliser votre code.
    - Utiliser des outils de génération de documentation comme Doxygen, PerlDoc, ...
    Pas grand chose a ajouter. Si vous eprouvez le besoin d'ajouter des commentaires au sein de votre code, et a l'exception rare de certains algorithmes exotiques, c'est que votre code est mal ecrit.

  10. #10
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Nip >> Le code auto-commenté car tellement il est bien écrit c'est vrai seulement pour la personne qui à codé le logiciel.

    Car essaye de rentrer dans un logiciel externe où il y a 2 lignes de coms par fichier et tu verra que ce n'est pas si facile et ques les commentaires ne sont superflus même si le code est super. Et puis les coms permettent de s'y retrouver si on lâche le logiciel pendant un bout de temps.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  11. #11
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Ca dépend de chacun mais personnellement, ce que mon oeil voit en premier lors de la relecture d'une fonction ce sont les commentaires. Donc pour moi un code sans commentaires c'est inconcevable pour la maintenance.

    On peut sans doute s'interroger sur la pertinence du contenu des commentaires, mais sur leur nécessité elle-même là j'ai du mal à imaginer.

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 250
    Par défaut
    Un petit bemol au commentaires dans le code: Les developeurs ont tendance a ne pas mettre a jour les commentaires en meme temps que le code qui va avec. Donc, mefiance... Par exemple, pour dire qu'un angle doit etre compris entre 0 et 360 degres, il vaut mieux une assertion qu'un commentaire.

    Peut etre que le meilleur test pour savoir si le code est bien commente et bien ecrit est de le faire lire a un collegue ???

  13. #13
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Nip >> Le code auto-commenté car tellement il est bien écrit c'est vrai seulement pour la personne qui à codé le logiciel.
    . [...] Et puis les coms permettent de s'y retrouver si on lâche le logiciel pendant un bout de temps.
    Mon commentaire allait en complement de celui de SaintAmand.

    Compter sur les commentaires pour "s'y retrouver" apres un certain temps est un leurre. Les commentaires sont au mieux totalement inutiles et au pire ne sont pas a jour et/ou masquent la complexite de la partie commentee, parce que les "astuces" pullulent ou parce que la partie du code en question a tellement ete modifiee qu'elle en a perdu son sens initial.
    La documentation avant code (j'inclus les tests unitaires qui sont de la documentation du code par le code), est le seul moyen fiable de s'y retrouver apres un certain temps et dans le cadre de code herite, le TDD permet a coup sur de garder un code clair et commente:
    -parce que les tests passent au rouge si la classe/methode est modifiee trop en profondeur.
    -parce que il est necessaire d'ecrire de nouveaux tests pour toute nouvelle fonctionnalitee.

    Abandonnez les commentaires qui sont par essence totalement inmaintenables et passez aux test unitaires.

  14. #14
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Par défaut
    Je suis d'accord avec ce que tu as écris Nip et j'en prends bien note. Cependant
    Abandonnez les commentaires qui sont par essence totalement inmaintenables et passez aux test unitaires.
    ce n'est pas toujours possible de placer des test unitaires car ce que je développe (par exemple) est basé sur une architecture assez complexe : seules, les classes développées sont inexploitables. Dans un tel cas, quelle solution préconises-tu ?

Discussions similaires

  1. documentation de code : Doxygen ou phpDocumentor?
    Par hansaplast dans le forum Zend
    Réponses: 31
    Dernier message: 13/08/2007, 11h51
  2. [VS2005] Comment utiliser la documentation du code en C++ ?
    Par StormimOn dans le forum Visual Studio
    Réponses: 8
    Dernier message: 16/09/2006, 16h46
  3. [documentation de code] quel outil utiliser?
    Par hansaplast dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2005, 09h51
  4. Documentation de code
    Par oodini dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 08/10/2005, 16h19
  5. [C#] Generation Document du code
    Par MALAGASY dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/01/2005, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo