Je documente mon code oo de la manière suivante :
- Au début du fichier qui contient 'classdef', j'écris un résumé de ce que fait la classe, et de son utilisation typique. J'explique également les propriétés en détail et j'ajoute une description d'une phrase pour chaque méthode.
- Après chaque définition de propriété, j'ajoute une phrase explicative à son sujet (sur la même ligne)
- Chaque méthode est documentée comme une fonction, c'est-à-dire qu'elle possède une ligne H1, un synopsis et une explication des paramètres d'entrée et de sortie.
Lorsque vous appelez 'doc myClass', vous verrez (1) au début, suivi de la liste des propriétés expliquées par les phrases que vous avez ajoutées en (2) et de la liste des méthodes qui affichent la ligne H1 et le reste de l'aide (3) si vous cliquez sur le lien.
De plus, toutes mes classes sous-classent une superclasse générale qui implémente (entre autres) la méthode 'help' qui appelle doc(class(obj)), ce qui me permet de faire apparaître l'aide à partir de chaque instance de la classe.
Exemple
%# MYCLASS is a sample class
%# All this text will show up at the top of the help if you call 'doc myClassName'
%#
%# myClass is an example for documentation. It implements the following properties and methods:
%# PROPERTIES
%# myProp - empty sample property (some more explanation could follow here)
%#
%# METHODS
%# myMethod - sample method that calls doc
%#
classdef myClass
properties
myProp = []; %# empty sample property
end %# properties
methods
%%# MYMETHOD -- use %% so that you can easily navigate your class file
function myMethod(obj)
%#MYMETHOD calls up the help for the object
%#
%# SYNOPSIS myMethod(obj)
%# INPUT obj: the object
%# OUTPUT none
%#
try
doc(class(obj))
catch
help(class(obj))
end
end %#myMethod
end %#methods
end %#myClass
Edit 1 Si vous voulez une belle documentation html, vous pouvez, en plus, utiliser m2html pour le générer pour vous. M2html rassemblera les textes d'aide et peut même faire des graphiques de dépendance.
Edit 2 Bien que m2html documente agréablement le code Matlab standard, il ne dispose d'aucun support spécifique pour les classes. Cela signifie que vous obtenez les méthodes sous forme de "sous-fonctions" liées à la classe, mais vous n'obtenez pas un résumé aussi agréable que celui que vous obtiendriez avec Doxygen, ou que celui que vous obtenez avec le navigateur de documentation intégré.