Manuel:Conventions de codage/Lua
Ceci est un essai. Il exprime des opinions et des idées de certains utilisateurs de mediawiki.org et peut ne pas avoir un large soutien. N'hésitez pas à mettre à jour cette page si nécessaire, ou utilisez la page de discussion pour proposer des modifications majeures. |
Espace blanc
- Utiliser la tabulation pour indenter. Auparavant, nous utilisions 4 espaces, mais nous sommes passés aux tabulations après que le comportement par défaut de l'éditeur de code de Wikipedia ait changé.
- Essayez de limiter la longueur des lignes simples, de sorte que les utilisateurs avec des écrans moins larges puissent lire le code plus aisément.
- Eviter les espaces blancs non nécessaires pour appeler une fonction ou indexer un tableau ou un dictionnaire. Aucun espace ne doit être utilisé juste avant ou à l'intérieur de parenthèses/crochets/accolades (
[, (, {
et les fermetures associées).
-- Yes:
hi = {1, 2, 3}
foo(hi[1], blah['a'])
-- No:
hi = { 1, 2, 3 }
foo( hi[ 1 ], blah[ 'a' ] )
blah ['b'] = hi [3]
foo (0, '')
Flux de contrôle
Mettre plusieurs déclarations sur une ligne est déconseillé, sauf si elles sont très courtes. Essayez aussi d'éviter cela avec les déclarations multi-clauses.
-- Oui :
if 1 then
foo()
bar()
else
baz()
end
if 1 then foo() end
foo(); bar(); baz();
-- Non :
if 1 then foo(); bar(); else baz(); end
if 1 then foo(); bar(); baz();
else lorem(); ipsum(); end
foo(); bar(); baz(); spam(); eggs(); lorem(); ipsum(); dolor(); sit(); amet();
Si elle ne tient pas sur une seule ligne, vous pouvez diviser une longue déclaration en plusieurs lignes avec une indentation en attente alignée sur le délimiteur d'ouverture.
Pour les déclarations if
, les conditions doivent être placées sur la ligne suivante.
-- Example:
hello = long_function_name(var_one, var_two,
var_three, var_four)
if ((condition1
or condition2)
and condition3
and condition4) then
foo()
bar()
baz()
end
Conventions de nommage
Définir la méthode d'entrée comme l'extraction simple des paramètres de la structure, puis de les passer à travers une fonction de même nom préfixé d'un seul caractère de soulignement '_'. Cela peut être ignoré si la fonction ne sert qu'au wikicode, ou si elle a besoin d'une structure pour autre chose que ses arguments.
Dans la bibliothèque standard, les noms de fonctions composés de plusieurs mots sont simplement mis ensemble (par exemple setmetatable
).
Notez que le camelCase est la façon préférée de nommer les fonctions, afin d'éviter les noms de fonctions potentiellement ambigus (garden-path).
-- See https://en.wikipedia.org/w/index.php?oldid=540791109 for code
local p = {}
function p._url(url, text)
-- Code goes here
end
function p.url(frame)
-- Take parameters out of the frame and pass them to p._url(). Return the result.
-- Adapt the below code to your specific template arguments
local templateArgs = frame.args
local url = templateArgs[1] or ''
local text = templateArgs[2] or ''
return p._url(url, text)
end
return p
Mise en surbrillance du code Lua
En dehors d'un module (comme sur les pages de discussion), la mise en surbrillance du code peut être ajoutée en utilisant la balise <syntaxhighlight> avec l'attribut lang="lua"
:
--code snippet
function p.main()
return "Hello world"
end
produit:
--code snippet
function p.main()
return "Hello world"
end