Manuel:Conventions de codage/Lua

This page is a translated version of the page Manual:Coding conventions/Lua and the translation is 100% complete.

Espace blanc

  1. 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é.
  2. 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.
  3. 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" :

‎<syntaxhighlight lang="lua">
--code snippet
	function p.main()
		return "Hello world"
	end
‎</syntaxhighlight>

produit:

--code snippet
	function p.main()
		return "Hello world"
	end

Voir aussi