Příručka:Konvence pro psaní kódu/Lua

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

Mezery

  1. Pro odsazení použijte tabulátory. Dříve jsme používali 4 mezery, ale nyní jsme přešli na tabulátory poté, co se změnilo výchozí chování editoru kódu Wikipedie.
  2. Pokuste se omezit délku jednoho řádku, aby lidé s menšími monitory mohli kód snadno přečíst.
  3. Při volání funkce nebo indexování pole nebo slovníku se vyhněte nadbytečným mezerám. Bezprostředně před nebo uvnitř hranatého znaku ([, (, { a jejich shody) by se neměly používat žádné mezery.
-- 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, '')

Řídící tok

Vkládání více příkazů na jeden řádek se nedoporučuje, pokud výraz není příliš krátký. Pokuste se tomu vyhnout i u vícečlenných výroků.

-- Ano:
if 1 then
	foo()
	bar()
else
	baz()
end

if 1 then foo() end

foo(); bar(); baz();

-- Ne:
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();

Pokud by byl jeden řádek příliš dlouhý, můžete velký příkaz rozdělit na více řádků s předsazeným odsazením, které je zarovnáno s oddělovačem otevření. Pro výpisy if by měly být podmínky umístěny na dalším řádku.

-- 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

Konvence pojmenování

Definujte metodu zadávání jako jednoduché rozbalení parametrů z rámce a jejich předání přes funkci se stejným názvem s předponou jedním podtržítkem. To lze ignorovat, pokud je funkce užitečná pouze z wikitextu nebo pokud potřebuje rámec pro něco jiného, než jsou její argumenty.

Ve standardní knihovně se názvy funkcí skládající se z více slov jednoduše skládají dohromady (např. setmetatable). Všimněte si, že camelCase je preferovaný způsob pojmenování funkcí, abyste se vyhnuli potenciálním garden-path názvům funkcí.

-- 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

Zvýraznění kódu Lua

Mimo modul (jako na talkpages) lze zvýraznění kódu přidat pomocí tagu <syntaxhighlight> s atributem lang="lua":

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

Zobrazí se:

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

Související odkazy