- Используйте 4 пробела для каждого уровня отступа.
- Нет разницы между использованием двойных кавычек
"
и одинарных кавычек '
.
- Пробелы ставятся вокруг операторов и после запятых, но не внутри скобок и после имён функций.
-- Правильно
x = 10
fruits = {"apple", "banana", "orange", "kiwi", "pineapple"}
-- Неправильно
x=10
fruits = {"apple","banana","orange","kiwi","pineapple"}
- Избегайте лишних пробелов вокруг круглых, квадратных и фигурных скобок.
-- Правильно
function foo(x)
return x * 2
end
local tabl = {key = "value"}
local myArray = {1, 2, 3, 4, 5}
-- Неправильно
function foo( x )
return x * 2
end
local tabl = { key = "value" }
local myArray = { 1, 2, 3, 4, 5 }
- Если нужен невидимый элемент VGUI, не создавайте пустую функцию рисования — присвойте её
nil
.
-- Правильно
local pan = vgui.Create("DPanel")
pan.Paint = nil
-- Неправильно
local pan = vgui.Create("DPanel")
pan.Paint = function() end
- Используйте
_
для игнорируемых переменных.
for _, item in ipairs(items) do
foo(item)
end
- Функции и методы пишутся с заглавной буквы, свойства объектов всегда с маленькой буквы.
- Аргументы в функциях пишутся с маленькой буквы.
- Предпочитайте использовать
Is
при именовании булевых функций.
local function IsEven(x)
return x % 2 == 0
end
- Предпочитайте синтаксис функции вместо синтаксиса переменной.
-- Правильно
local function eat()
...
end
-- Неправильно
local eat = function()
...
end
- Используйте точечную нотацию для доступа к известным свойствам.
local Person = {
age = 20
}
-- Правильно
Person.age
-- Неправильно
Person["age"]
false
и nil
являются ложными значениями в условных выражениях.
-- Правильно
if name then
...
end
-- Неправильно
if name != nil then
...
end
- Ставьте пробел после
//
и --
.
- Избегайте выравнивания объявлений переменных.
-- Неправильно
local a = 1
local long_identifier = 2
- Используйте имена сетевых запросов, учитывая скрипт/аддон, к которому они принадлежат, и их роль.
-- Примеры
util.AddNetworkString("GangSystem-InvitePlayer")
util.AddNetworkString("HatShop-Buy")
- При отправке сетевого запроса вложенный синтаксис записи данных должен сохраняться.
net.Start("Test")
net.WriteString("Hello World")
net.WriteTable({6, 8, 10, 12})
net.SendToServer()
- При написании блока/блоков кода используйте один и тот же стиль имен переменных.
- Имя хука должно указывать на аддон/скрипт, к которому принадлежит код, и на значение хука.
hook.Add("PlayerSay", "AutoDonate.OpenMenu", function(pl, text)
if text == "/donate" then
pl:ConCommand("autodonate_menu")
end
end)
- При объявлении переменных цвета и материала указывайте их принадлежность.
local color_button = Color(75, 75, 75)
local mat_medal = Material("icon16/rosette.png")
- Если в кодовом блоке есть итерация, кэшируйте переменные.
local color_text = Color(25, 25, 25)
hook.Add("HUDPaint", "CustomHUD.Test", function()
draw.SimpleText("Hello there", "TargetID", 25, 25, color_text)
end)
-- Где-то во время создания интерфейса
local pl_nick = LocalPlayer():Name()
pnl.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, color_black)
draw.SimpleText(pl_nick, "Trebuchet24", w * 0.5, h * 0.5, color_white, 1, 1)
end
- Файлы GLua должны именоваться строчными буквами.
- Посвятите отдельную папку для вашего аддона в каталоге
lua/
. Ссылайтесь на неё через файл *_autorun.lua
в lua/autorun/
.