# 代码规范 注:小程序和外部库等部分代码可以不遵守 ## 缩进 全部使用四个空格 ## 文件尾 文件尾要有空行 ## 变量名 库 全大写 库方法和全局变量 小驼峰 局部函数 下划线开头小驼峰 简单的局部变量 多个单词首字母或大写单字母 需要阅读的局部变量 小驼峰 ## 常用语句块格式 ```lua 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 ``` ## 单行/多行注释 ```lua 单行代码--注释1 --注释2 函数或者代码块 --[[这里最好带上几个字的概述,方便折叠的时候预览,方括号间等号能不带就不带 注释内容 ]] 函数或者代码块 ``` ## 字符串 可能输出到外部给玩家或者看的(或给开发者看的debug信息)用双引号 只存在于代码中不对外展示的字符串用单引号 双方括号(等号能不带就不带)用于大段文本 ## 代码紧凑 ### 少空格(这几种地方不要用空格) 逗号后 运算符两边 左括号前 右括号后 ### 省小括号 如果一个函数只能接受一个输入 并且输入的值是table或者string 那么小括号要省略,例如 GC.DO{100,40 {'print',"Hello",0,0}, {'print',"World",0,20}, } ### 少空格紧凑方法 用正则查找替换,把 \s?([+\-*/=()\[\]{}"']|==|>=|<=|~=|\.\.)\s? 全部替换成 $1 注意,需要缩进模式为制表符,可以先切到制表符然后替换再切回去 注意,字符串常量内部首尾空格会被替换 ## goto ### 所有标签必须使用下列前缀的一个 BREAK_ 类似一般的break,用于跳出任意层,可能跳过循环后一部分代码 CONTINUE_ 类似一般的continue,用于快速跳到循环的末尾执行下一次循环 THROW_ 类似一般的catch,用于捕获错误或跳出一个块并执行统一操作 REPEAT_ 返回到前面一个点,用于重新执行某个操作