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.
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
Possible copie de http://stackoverflow.com/questions/35670456/table-with-methods-how-to-handle-inspect-them/ – warspyking
Juste curieux, pourquoi encore Lua 5.0? – lhf