1

Je cherche un moyen de clarifier les contrats de mes fonctions Lua. En particulier, quels attributs sont censés avoir ces paramètres.Auto-documentation des paramètres dans Lua

Pour illustrer mon problème, quelques extraits de code avec la structure typique de mon code actuel. Une fonction qui construit une nouvelle "instance" avec deux fonctions publiques.

local function newTextPrinter(color) 
    return { 
     print = function(textToPrint) 
      PrintText(textToPrint, 20, color, 5, 'center'); 
     end, 
     printBig = function(textToPrint) 
      PrintText(textToPrint, 30, color, 5, 'center'); 
     end 
    } 
end 

Une fonction qui prend un paramètre supposé avoir la même signature (ou un surensemble).

local function printSomeStuff(textPrinter) 
    textPrinter.print("some") 
    textPrinter.printBig("stuff") 
end 

Invocation de la fonction plus tard

local textPrinter = newTextPrinter("ffffffff") 
printSomeStuff(textPrinter) 

Le problème avec ce code est que vous ne pouvez pas dire ce que le paramètre textPrinter fourni à printSomeStuff est censé ressembler sans regarder à la mise en œuvre de printSomeStuff. Alors qu'avec cet exemple, il est assez facile de le faire, ce n'est souvent pas le cas (et dans mon scénario les forces sautent entre les fichiers). Il n'y a également aucun indice qu'une valeur appropriée peut être obtenue via newTextPrinter, en dehors de la similarité de nom.

Existe-t-il un moyen de rendre le code plus auto-documenté et de révéler les intentions des auteurs?

Je préfère une approche qui est légère et n'essaie pas d'émuler l'héritage basé sur la classe. De même, le code est préféré à la documentation, et à défaut, la documentation dans un format compris par les outils est préférée à la forme libre. Clairement, je peux juste écrire un commentaire comme "paramètre textPrinter besoins print et printBig fonctions publiques", mais cela est très sujet à erreur si rien ne vous dit des erreurs que vous faites dans la documentation, ou lorsque vous refactornez le code et oubliez de le mettre à jour. J'utilise Lua 5.0 et je suis assez nouveau dans la langue.

+0

double possible de [Tableau des méthodes, comment gérer/les inspecter?] (Http://stackoverflow.com/questions/35670456/table-with-methods-how-to-handle-inspect -them) – warspyking

+0

Possible copie de http://stackoverflow.com/questions/35670456/table-with-methods-how-to-handle-inspect-them/ – warspyking

+2

Juste curieux, pourquoi encore Lua 5.0? – lhf

Répondre

2

Oui. Premièrement, la dénomination est la clé. Ensuite, les commentaires peuvent décrire le contrat. En outre, les commentaires formatés, marqués, traités et présentés contextuellement sont le nombre de personnes programmées. Enfin, les hyperliens dans les commentaires formatés permettent d'accéder à une documentation complète.

Il existe quelques systèmes de traitement de commentaires formatés: LuaDoc, LDoc, LDT Documentation Language, .... Malheureusement, il n'y a pas de standard et le choix dépend principalement des capacités de l'IDE de l'utilisateur. Certains IDE aideront même l'auteur à formater les commentaires.

Même sans traitement, le balisage et le formatage - pour la plupart - améliorent la lisibilité humaine. Donc, tant que la source est facile à faire apparaître, cela aide.

Popover documentation for the print function