Files
Techmino/contributing.md
2021-10-07 21:32:07 +08:00

2.1 KiB

代码规范

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

缩进

全部使用四个空格

文件尾

文件尾要有空行

变量名

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

常用语句块格式

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
函数或者代码块

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

字符串

可能输出到外部给玩家或者看的(或给开发者看的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_    返回到前面一个点,用于重新执行某个操作