Projet

Général

Profil

DocumentationCodeBonnesPratiques » Historique » Version 17

Daniel Dehennin, 07/01/2013 16:59
Exemple de sources correctement documentés

1 1 Emmanuel GARETTE
h1. DocumentationCodeBonnesPratiques
2 1 Emmanuel GARETTE
3 1 Emmanuel GARETTE
h2. Généralité
4 1 Emmanuel GARETTE
5 1 Emmanuel GARETTE
* La documentation technique doit être en anglais.
6 5 Gérald Schwartzmann
* Elle est placée dans les docstrings du code.
7 1 Emmanuel GARETTE
8 1 Emmanuel GARETTE
h2. Description du module
9 1 Emmanuel GARETTE
10 12 Daniel Dehennin
La docstring du module est placée en haut du fichier juste après le "shebang":https://fr.wikipedia.org/wiki/Shebang, la déclaration d’"encodage des caractères":https://fr.wikipedia.org/wiki/Codage_de_caract%C3%A8res et la licence du code.
11 2 Gwenael Remond
12 1 Emmanuel GARETTE
<pre>
13 12 Daniel Dehennin
#!/usr/bin/python
14 12 Daniel Dehennin
# -*- coding: utf-8 -*-
15 12 Daniel Dehennin
#
16 16 Emmanuel GARETTE
##########################################################################
17 16 Emmanuel GARETTE
# <nom du projet>
18 16 Emmanuel GARETTE
# Copyright © 2012 Pôle de compétences EOLE <eole@ac-dijon.fr>
19 14 Daniel Dehennin
#
20 16 Emmanuel GARETTE
# License CeCILL:
21 16 Emmanuel GARETTE
#  * in french: http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html
22 16 Emmanuel GARETTE
#  * in english http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
23 16 Emmanuel GARETTE
##########################################################################
24 2 Gwenael Remond
</pre>
25 2 Gwenael Remond
26 11 Daniel Dehennin
La docstring doit contenir :
27 1 Emmanuel GARETTE
* description rapide en une phrase du module ;
28 1 Emmanuel GARETTE
* description avancée qui explique le rôle du module ;
29 1 Emmanuel GARETTE
* des exemples simples d'utilisation.
30 1 Emmanuel GARETTE
31 1 Emmanuel GARETTE
Les exemples peuvent être un prompt :
32 1 Emmanuel GARETTE
33 1 Emmanuel GARETTE
<pre>
34 1 Emmanuel GARETTE
    >>> is_locked()
35 1 Emmanuel GARETTE
    True
36 1 Emmanuel GARETTE
</pre>
37 1 Emmanuel GARETTE
38 1 Emmanuel GARETTE
ou une portion de code :
39 1 Emmanuel GARETTE
40 1 Emmanuel GARETTE
<pre>
41 1 Emmanuel GARETTE
    ::
42 1 Emmanuel GARETTE
43 1 Emmanuel GARETTE
        from toto.titi import is_locked
44 1 Emmanuel GARETTE
45 1 Emmanuel GARETTE
        toto()
46 1 Emmanuel GARETTE
        is_locked()
47 1 Emmanuel GARETTE
</pre>
48 1 Emmanuel GARETTE
49 1 Emmanuel GARETTE
h2. Docstring des méthodes
50 1 Emmanuel GARETTE
51 3 Gwenael Remond
Seules les méthodes publiques (qui ne commencent pas par "_") seront mises dans la documentation (mais les méthodes privées sont aussi à documenter).
52 1 Emmanuel GARETTE
53 1 Emmanuel GARETTE
La docstring doit contenir :
54 1 Emmanuel GARETTE
55 1 Emmanuel GARETTE
* description rapide en une phrase de la méthode ;
56 1 Emmanuel GARETTE
* si nécessaire une description avancée qui explique le rôle du module ;
57 1 Emmanuel GARETTE
* si nécessaire des exemples simples d'utilisation.
58 1 Emmanuel GARETTE
* les paramètres de la façon suivante (xxx étant le nom du paramètre et yyyyyy la description) :
59 1 Emmanuel GARETTE
60 1 Emmanuel GARETTE
<pre>
61 1 Emmanuel GARETTE
    :param xxx: yyyyyy
62 1 Emmanuel GARETTE
</pre>
63 1 Emmanuel GARETTE
64 1 Emmanuel GARETTE
Si nécessaire les valeurs de retour (yyyyyy étant la description) :
65 1 Emmanuel GARETTE
66 1 Emmanuel GARETTE
<pre>
67 1 Emmanuel GARETTE
    :return: yyyyyy
68 1 Emmanuel GARETTE
</pre>
69 1 Emmanuel GARETTE
70 4 Gwenael Remond
plus d'info sur la syntaxe des docstrings: http://sphinx-doc.org/domains.html#info-field-lists
71 4 Gwenael Remond
72 1 Emmanuel GARETTE
h2. Docstring des classes
73 1 Emmanuel GARETTE
74 10 Gwenael Remond
comme pour la docstring des modules (mais sans la licence)
75 8 Gwenael Remond
76 8 Gwenael Remond
h2. Tips
77 8 Gwenael Remond
78 8 Gwenael Remond
il est possible de faire un lien portant directement sur le redmine de deux manières :
79 8 Gwenael Remond
80 8 Gwenael Remond
<pre> 
81 8 Gwenael Remond
82 8 Gwenael Remond
:issue:`410` 
83 8 Gwenael Remond
84 8 Gwenael Remond
</pre> 
85 8 Gwenael Remond
86 8 Gwenael Remond
est un lien qui porte directement sur la demande 410
87 8 Gwenael Remond
88 8 Gwenael Remond
et
89 8 Gwenael Remond
90 8 Gwenael Remond
<pre>
91 8 Gwenael Remond
92 8 Gwenael Remond
 :eole:`/projects/creole/wiki/Lock24`
93 8 Gwenael Remond
94 8 Gwenael Remond
</pre>
95 8 Gwenael Remond
96 8 Gwenael Remond
qui est simplement un raccourci vers http://dev-eole.ac-dijon.fr/projects/creole/wiki/Lock24
97 17 Daniel Dehennin
98 17 Daniel Dehennin
h2. Exemples
99 17 Daniel Dehennin
100 17 Daniel Dehennin
Plusieurs fichiers sources ont reçu une attention assez particulière sur la documentation :
101 17 Daniel Dehennin
102 17 Daniel Dehennin
- python-pyeole:source:pyeole/decorator.py
103 17 Daniel Dehennin
- python-pyeole:source:pyeole/log.py
104 17 Daniel Dehennin
- python-pyeole:source:pyeole/lock.py