Příručka:Konvence pro psaní kódu/Lua
Mezery
- 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.
- Pokuste se omezit délku jednoho řádku, aby lidé s menšími monitory mohli kód snadno přečíst.
- 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: if1then foo() bar() else baz() end if1thenfoo()end foo();bar();baz(); -- Ne: if1thenfoo();bar();elsebaz();end if1thenfoo();bar();baz(); elselorem();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 orcondition2) andcondition3 andcondition4)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 localp={} functionp._url(url,text) -- Code goes here end functionp.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 localtemplateArgs=frame.args localurl=templateArgs[1]or'' localtext=templateArgs[2]or'' returnp._url(url,text) end returnp
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 functionp.main() return"Hello world" end