Příručka:Konvence pro psaní kódu/Lua
Toto je esej. Vyjadřuje názory a nápady některých uživatelů mediawiki.org, ale nemusí mít širokou podporu. Neváhejte a aktualizujte tuto stránku podle potřeby nebo použijte diskusní stránku a navrhněte zásadní změny. |
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:
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"
:
--code snippet
function p.main()
return "Hello world"
end
Zobrazí se:
--code snippet
function p.main()
return "Hello world"
end