Skip to content

Coding Standard

MrZ_26 edited this page Apr 6, 2024 · 4 revisions

注:小程序和外部库等部分代码可以不遵守

缩进

  • 全部使用四个空格

文件尾

  • 文件尾要有空行

变量名

变量类型 格式
全大写
库函数 小驼峰
局部函数 下划线开头小驼峰
全局变量 全大写
全局函数 小驼峰
需要阅读的局部变量 小驼峰
简单的局部变量 多个单词首字母或大写单字母

常用语句块格式

f() -- 语句末不需要加分号
if c1 then
    s1
elseif c2 then
    s2
else
    s3
end
while c do
    s
end
for i=1,#l do
    s
end
for k,v in next,table do -- pairs(table)最好换成next,table
    s
end
repeat
    s
until c
do
    s
end

单行/多行注释

单行代码 -- 注释1
-- 注释2
函数或者代码块
--[[ 这里最好带上几个字的概述,方便折叠的时候预览,方括号间等号能不带就不带
    注释内容
]]
函数或者代码块

字符串

  • 双引号:会输出到外部给玩家或者开发者阅读的字符串
  • 单引号:只存在于代码中不对外展示的字符串
  • 双方括号(等号能不带就不带):大段文本

代码紧凑

该部分内容不适用于:

  • 引入的其他lua库,可能会保留原作者代码风格
  • 以形如---@xxx开头的行的“语法注释”
  • 用空格对齐大段内容的数据代码

少空格

逗号和(非字母)运算符两边不需要空格 也就是说,空格只在lua保留字旁用

- print(a, "b" .. c)
+ print(a,"b"..c)

- x = 1 / (2 + 3)
+ x=1/(2+3)

例外: “--”右侧 无名函数中的括号左侧

-- Comment
f=function() end

合并单行

如果有多行代码合并到单行内更整齐,那么用分号+空格来合并,例如

a=5;  func(a)
b=10; func(b)

省小括号

  • 如果一个函数只能接受一个输入,并且输入的值是table或者string,那么小括号要省略,例如
GC.execute{100,40
    {'print',"Hello",0,0},
    {'print',"World",0,20},
}

少空格紧凑方法

用正则查找替换,把 \s([,+\-*/=><"']|==|>=|<=|~=|\.\.)|([,+\-*/=><"']|==|>=|<=|~=|\.\.)\s 全部替换成 $1$2

  • 注意,需要缩进模式为制表符,可以先切到制表符,替换好了再切回去
  • 注意,字符串常量内的空格也会被替换,可以把表达式里的单双引号删除
  • 注意,注释符号会有一些干扰,可以把表达式里的减号删除

Goto(会影响代码兼容性,尽量先不用)

所有标签必须使用下列前缀的一个:

  • BREAK_ 类似一般的break,用于跳出任意层,可能跳过循环后一部分代码
  • CONTINUE_ 类似一般的continue,用于快速跳到循环的末尾执行下一次循环
  • THROW_ 类似一般的catch,用于捕获错误或跳出一个块并执行统一操作
  • REPEAT_ 返回到前面一个点,用于重新执行某个操作