Bonjour,
Je vais essayer de faire cours :
Dans un gros programmes Perl, j'exécute des règles de manipulation.
Ces règles (des sous-routines) se compte par millier.
Ces règles sont classées dans des Package différents.
En fonction de paramétrage (des fichiers JSON), les modules/package embarquants les règles souhaitées, sont chargés dynamiquement par le programme lui même.
Cette méthode me permet une vraie souplesse, même si ça met un peut de temps à démarrer.
Toutefois, la documentation me fait défaut (tien c'est bizarre, je suis le seul...)
Cette documentation n'a pas pour objectif de décrire l'arbre de développement, mais plutôt un recueil des actions de chaque règle et des attributs d'objets manipulés, à destination d'utilisateurs.
J'ai tenté plusieurs solutions y compris doxygen, mais sans réel succès.
Le POD ne me convient pas, je le trouve polluant en nombre de ligne, pour finalement très peut d'intérêt et pas du tout sexy.
J'ai donc commencé à mettre la documentation relative à chaque règle (sous-routine), dans des variables locales à chacune de ces fonctions.
Le but est de garder la documentation très proche de la fonction, donc à l'intérieur (comme un header en somme).
Les variables on toujours le même nom, pour simplifié la maintenance, ceci m'évite de mettre le nom de la fonction dans la variable.
J'ai bien entendu tenté aussi de mettre toute la documentation dans un Hash, avec les noms de fonctions, mais j'ai trouvé cela très lourd, lors des maintenances et changement de nom de fonction (les noms sont plus proche d'un rôle fonctionnel, que d'une appellation technique).
Si j'oubliais de changer le nom d'une clé de Hash, la documentation devenais fausse (c'est pire que tout)
Le texte de documentation, "quoté" (q{ }), est lui même en Markdown.
Pour documenter une fonction, j'ai besoin de trois ou quatre variables représentant :
- La synthèse
- Le descriptif détaillé
- Les attributs manipulés
- Les messages associés
- Le complément d'information
Bien entendu je me charge de faire les liens avec les différentes références.
Je cherche donc un module, à positionner dans une seule étape, qui me permettrait de balayer tous les pointeurs de fonctions chargées et avec Padwalker (encore merci à cmcmc pour ça), accéder à leurs variables "my" (peek_my).
Puis, pour terminer, un module qui reprendrai le texte Markdown (je pense à Text::Markdown), pour le mettre dans des portions de HTML (ou XHTML) pour faire une vraie documentation sexy.
La version PDF de la documentation me paraît aussi une bonne solution.
Dans ce cas faire alors du HTML to PDF ou Mardown to PDF ?!
Pour information, j'ai bien trouvé un endroit ou positionner PadWalker avant l'exécution d'une fonction, mais je ne passe pas toujours dans ce code et surtout il peut être appelé des millions de fois. Ce qui n'est pas très performant...
Je vous remercie d'avance de vos idées ou solutions.
Note : J'utilise aussi Moose, pour des centaines de catégories d'objets et 3 à 10 niveaux d'héritage. Mais paradoxalement, j'ai moins de problèmes, car Moose à des modules d'accès aux propriétés et attributs des objets.
Ainsi je récupère bien la documentation de chaque attribut.
Chaque propriété d'objet est documenté, mais pas encore en Mardown (mais ça vient).
Désolé d'être verbeux, mais il me semblais nécessaire d'être précis.
C'est peut être devant mon nez, ou alors je suis neuneu, mais je ne trouve rien...
Encore merci d'avance
DCA

 

 
		
		 
         
			
			


 
			 
   


 Documentation interne de sous-routine
 Documentation interne de sous-routine
				

 Répondre avec citation
  Répondre avec citation


 
  
  
  
 
 
  
  
 
 
			 
  Envoyé par dca_marshall
 Envoyé par dca_marshall
					

 
 
 
			 ! C'est déjà une très bonne idée d'avoir la volonté de commenter ces codes
 ! C'est déjà une très bonne idée d'avoir la volonté de commenter ces codes  .
.
Partager