Salut,
Je m'interroge sur le moyen le plus efficace de faire cohabiter les commentaires et informations de licence avec la documentation doxygen.
En effet, l'idéal est d'avoir, dans chaque fichier, un cartouche rappelant la licence utilisée proche de
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| /* This file is part of farfelue.
*
* farfelue is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* farfelue is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser Public License for more details.
* You should have received a copy of the GNU Lesser Public License
* along with Foobar. If not, see <http://www.gnu.org/licenses/>.
*
* copyrigth (c) 2010 Philippe Dunski
*/ |
D'un autre côté, comme l'idéal est, malgré tout de fournir une documentation aussi complète que possible, il faudrait avoir les commentaires doxygen sous une forme proche de
1 2 3 4 5 6 7
| /** @file fichier.hpp include fichier.hpp
* @brief what does this file
* @ author philippe dunski
* @ date 2010/04/07
*
* some more descriptive text
*/ |
En outre, je souhaiterais généraliser YAGNI, et, par conséquent, faire en sorte que la documentation doxygen gère la "todo list" pour chaque fichier, ce qui implique l'ajout, dans le cartouche propre au fichier, d'une ligne proche de
/** @todo add something */
par élément à rajouter en temps utile.
Et nous ne parlons même pas de la nécessité du cartouche des fonctions et des membres des différentes structures, ni de la nécessité de gérer la documentation de manière bilingue 
Pour vous aider à imaginer à quoi risque de ressembler un fichier qui contiendrait toutes ces parties, cela ressemblerait en gros à
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| /* This file is part of farfelue.
*
* farfelue is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* farfelue is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser Public License for more details.
* You should have received a copy of the GNU Lesser Public License
* along with Foobar. If not, see <http://www.gnu.org/licenses/>.
*
* copyrigth (c) 2010 Philippe Dunski
*/
/** @file fichier.hpp include/fichier.hpp
* @brief @english what does this file
* @brief @french ce que fait ce fichier
* @ author philippe dunski
* @ date 2010/04/07
*
* @english some more descriptive text
* @french une description plus détaillée
* @todo @english add #1
* @todo @french ajout #1
* @todo @english add #2
* @todo @french add #2
*/
#ifndef FICHIER_HPP
#define FICHIER_HPP
/** @brief @english class brief description
* @brief @french description breve de la classe
*
* @english some more descriptive text (on multiple lines)
* @french du texte plus précis (sur plusieurs lignes)
*/
class MaClass
{
public:
/*...*/
/** @brief @english function that does something
* @brief @french fonction qui fait quelque chose
* @param[in] parameter #1
* @param[out] parameter #2
* @return return value
* @throw exception trhown in case of...
*/
void foo()
};
#endif // FICHIER_HPP |
Je suis personnellement généralement toujours partisan des commentaires, mais il faut avouer qu'ici, le taux de commentaire par ligne de code effective devient... vraiment important 
Je me demande donc si nous n'aurions pas intérêt à séparer les commentaires doxygen, pourquoi pas en deux fichiers distincts, l'un permettant de générer la documentation en anglais sous la forme de:
fichier_en.dox
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| /** @english
* @file fichier.hpp include/fichier.hpp
* @briefwhat does this file
* @ author philippe dunski
* @ date 2010/04/07
*
* @english some more descriptive text
* @todo @english add #1
* @todo @english add #2
*
* @class MaClass
* @brief class brief description
*
* more descriptive class description
*
* @fn void MaClass::foo()
* @brief function that does something
* @param[in] parameter #1
* @param[out] parameter #2
* @return return value
* @throw exception trhown in case of...
*/ |
et en fichier_fr.dox qui contiendrait... l'équivalent en français.
L'avantage de la technique, c'est qu'elle permet de garder des fichiers "épurés" (dans lesquels il n'y a pas pour ainsi dire plus de commentaires que de code), l'inconvénient majeur étant... la multiplication des fichiers à modifier:
On passerait de un ou deux fichiers à modifier à ... trois ou quatre fichiers à modifier à chaque fois... et on observerait une augmentation du nombre de fichiers dans les même proportions
De plus, je dois avouer que, selon moi, le cartouche expliquant les buts et la logique mise en oeuvre par une fonction a beaucoup plus sa place juste avant son implémentation que... juste avant sa déclaration (du moins, si les deux sont séparés), simplement parce que c'est typiquement le genre de chose dont le développeur qui travaille sur la fonction a besoin afin de s'assurer qu'il "respecte bien les règles".
L'utilisateur de la fonction, quant à lui est plutôt sensé... se référer à la documentation pour savoir si la fonction dont il envisage de se servir est adaptée à ses besoins 
Comme vous le voyez, j'ai pu trouver du bon et du mauvais pour toutes les solutions, et, si l'idée de séparer clairement les commentaires de génération de documentation me plait énormément, je dois malgré tout avouer qu'elle n'est pas sans me provoquer un certain malaise.
Aussi, je préfères m'en remettre à votre jugement. Que préférez vous comme organisation 
- Séparer clairement les commentaires permettant la génération de documentation dans des fichiers prévus à cet effet
- Placer l'ensemble des commentaires permettant la génération de documentation dans les fichiers d'en-tête
- Placer "le stricte minimum" des commentaire de génération de documentation dans les fichier d'en-tête, et le reste dans les fichiers d'implémentation
- placer une partie des commentaire de documentation dans les fichiers d'en-tête, une autre dans les fichiers d'implémentation, et le reste dans des fichiers prévus à cet effet
Merci d'avance pour vos avis.
Partager