Lua代码编写规范

Lua代码编写规范 


开发中,大量使用lua,暂时根据当前状况,总结相对而言较好的规范,在多人协作中可以更好的开发、交流。
 
介绍 


该文档旨在为使用lua编写应用程序建立编码指南。 
制订编码规范的目的: 

  • 统一编码标准,通用,提高开发效率; 
  • 使代码通俗易懂,易于维护。 

 
切记:善用调试器。 

一、 命名惯例 

1.所有lua文件命名时使用小写字母、下划线

2.类名、变量名尽可能使用有意义的英文,类名使用帕斯卡命名法,变量名使用骆驼式命名法 

3.常量、消息号定义时用大写,单词间 _ 分割  eg:KIND_PET_FOOD

4.枚举值定义时 加前缀 enum_ 

5. 函数名使用骆驼式命名法

注:

骆驼式命名法:第一个单字以小写字母开始;第二个单字的首字母大写或每一个单字的首字母都采用大写字母

帕斯卡命名法:和骆驼命名法很像,只有一点区别,就是首字母要大写。(单字之间不以空格断开或连接号)

二、 文件组织 

1. 文件开头加上此文件的功能、职责的简要描述; 

如下:

--

-- Author: Feng

-- Date: XXXX-XX-XX

-- 功能描述

每个文件都加module 限定词; 导入的模块都加 local 限定词;或者使用(module(..., package.seeall)),这样便于进行热更新

2. 所有提供外部函数都加如下格式的注释。 

例如: 

--此函数检测是否可以从A(oldx, oldy)点走到B点(newx, newy) 

--@param oldx 当前所在点x 

--@param oldy 当前所在点y 

--@param newx 目标点x 

--@param newy 目标点y 

--@return 若可以到达,返回true;否则返回false 

function Object:checkBar(oldx, oldy, newx, newy) 

… 

end 

3. 函数与函数间、以及一些定义之间加上空行。  

4. 函数内的临时变量、文件内的局部函数都加上 local 限定词 

5. 函数的行数过长(大于100行)时,尽量拆分为多个子函数;函数中一些晦涩的部分,一定要加上注释。 

6. 短小的注释使用 --; 较长的注释使用 --[[ ]] 

7. assert函数开销不小,请慎用。 

8. Lua类设计时,用元表来实现oop。 

不要直接增加函数成员,因为直接增加函数成员会导致内存增加并且在jit下执行效率和用元表方式无差异。 

9. 文件使用UTF8格式

三、 分隔和缩进 

1. 使用空行 

  在下述情况下使用单行的空白行来分隔: 

    1)在方法之间 

    2)在方法内部代码的逻辑段落小节之间 

    3)在注释行之前 

  注释之前增加一行或者多行空行。 

2. 使用空格符 

  除正常的成分之间以空格符分隔名(如数据类型和变量名之间),在下述情况下也应使用一个空格符来分隔: 

    1)运算符和运算符之间,如: c = a + b; 

    2)在参数列表中的逗号后面,如: 

    function m1(year, month) 

    end 

    3) 在for语句时,如: 

    for k, v in pairs(t) do 

    end 

    4)在下列情况下不要使用空格。 

    例如: 

    函数定义时: 

    function test1(a) 

    end 

    不要这样: 

    function test1( a ) 

    end 

函数调用时: 

    test1(3) 

不要这样: 

    test1( 3 ) 

    不要如此的原因在于: 

        a).容易忘记相关空格,导致风格不统一,这样还不如不加; 

        b).lua解析语法时是采用空格等分割来解析的,某些情况下,若不小心加空格会导致非预期的结果。 

3. 使用换行符 

不建议在一行中写多条语句,一条语句的长度一般超过了80个字符时,应该换行 

4. 使用小括号 

可以使用小括号来强行规定运算顺序 

5. 使用缩进 

在下述情况下应用缩进 

1)类中的成分 

2)方法体或语句块中的成分 

3)换行时的非起始行 

缩减量一般为在上一级成分的基础上跑到下一个制表位 

四、 代码建议: 

1. 代码中使用的一些函数尽可能在文件开头或者当前局部环境中加local前缀重新定义下。 

例如: 

local assert = assert  

2.  尽量减少表中的成员是另一个表的引用。 考虑lua的垃圾收集机制、内存泄露等。 

3. 高级特性尽可能不用 

4. 写代码时尽可能写的简单,考虑性能时先做好推断,看看能提升多少,增加的复杂度以及造成的代码晦涩有多严重,然后再决定如何做 

5. 加载的xml数据表,尽可能的做好数据校验,若校验失败,要出发断言,使服务器无法启动;不要等出错时,回过头来检查是数据表问题还是逻辑问题。 

6. 出错时,记录好错误日志。 

有的函数开销比较大,而调用的频率很低,那么可以不对他做优化; 

反之,有的函数开销较小,但是调用的频率很高,从如何降低调用频率以及减少函数开销两个角度去思考,然后定下优化方案 

提交代码之前,去掉或者注释掉无关的代码; 测试下保证服务器可以正确启动。

lua学习资料: 百度网盘 请输入提取码 提取码: itrc

### 回答1: 在定义扫描规则时,您可以使用正则表达式来匹配您想要扫描的特定字符串或模式。例如,假设您想扫描所有包含字符串"hello"的行,则可以使用以下正则表达式: ``` .*hello.* ``` 此正则表达式将匹配任何包含"hello"的行,包括"hello"前后可能会有任意数量的其他字符。 您可以使用Lua的string.match函数来检查行是否与给定的正则表达式匹配。例如: ``` if string.match(line, ".*hello.*") then -- 这一行包含字符串"hello",因此执行一些操作 end ``` 此外,您还可以使用正则表达式中的捕获组来提取匹配的文本。例如,假设您想提取所有包含"hello"的行中的"hello"字符串本身,则可以使用以下正则表达式: ``` .*(hello).* ``` 您可以使用string.match函数的第二个返回值来访问捕获组中的文本。例如: ``` local matched_text = string.match(line, ".*(hello).*") if matched_text then -- 这一行包含字符串"hello",并且已提取出来 end ``` 正则表达式是一种强大的工具,可用于匹配和提取各种文本模式。有关更多信息,可以参考Lua的 ### 回答2: 要自定义Lua代码的扫描规则,可以使用一些专门的工具和技术来实现。下面简要介绍一种常用的方法: 1. 使用词法分析器(lexer):词法分析是将源代码分解为词法单元的过程。可以使用词法分析器来解析Lua代码并标记出关键字、标识符、运算符等。可以基于Lua的语法规则,自定义一套词法规则并编写相应的正则表达式模式。 2. 使用语法分析器(parser):语法分析是根据源代码的语法规则,构建语法树的过程。可以使用语法分析器来解析Lua代码并生成相应的语法树。通过理解Lua的语法规则,并根据自定义的规则,可以修改或扩展语法解析过程中的规则。 3. 静态代码分析工具:静态代码分析工具可以提供更高级的分析功能。可以使用这些工具来分析Lua代码,并根据自定义的规则来检查代码中的问题,比如未使用的变量、类型错误、未初始化的变量等等。可以选择合适的静态代码分析工具,并配置相应的规则来满足个人或项目的需求。 4. 定制开发环境:为了方便自定义扫描规则,可以使用定制开发环境(IDE)来提供更好的支持。一些IDE提供了自定义规则的功能,并可以根据规则来检查代码并提供相应的错误或建议。根据实际需求,可以选择适合的IDE,并配置相应的规则。 总结起来,自定义Lua代码的扫描规则通常涉及到使用词法分析器、语法分析器、静态代码分析工具和定制开发环境等工具和技术。通过理解Lua的语法规则,并根据实际需求,可以修改或扩展这些工具和技术的规则,从而达到自定义扫描规则的目的。 ### 回答3: 要自定义Lua代码的扫描规则,可以采用以下步骤: 1.了解扫描规则:首先,了解扫描规则是什么以及如何工作。扫描规则是一组用于识别代码结构、语义和模式的规则。它们可以根据需求进行自定义。 2.选择适当的工具:根据自己的需求,选择合适的工具来自定义扫描规则。例如,可以使用静态代码分析工具(如Luacheck、LuaInspect等)或使用编程语言(如Python等)编写脚本来实现自定义规则。 3.定义规则:确定要自定义的规则类型,例如命名约定、代码结构、循环、函数调用等。根据规则类型,编写相应的规则描述。规则描述可以使用正则表达式、语法树或模式匹配等方式。规则描述应该尽可能准确和详细。 4.实现规则:将规则描述转换为实际代码。根据选择的工具,编写相应的规则实现代码。这可能涉及到配置文件、插件或自定义脚本。根据工具的文档和示例,可以了解如何正确地实现规则。 5.测试规则:使用自定义规则对Lua代码进行测试。使用一些样本代码来检查规则是否按预期工作。根据测试结果进行调整和优化规则。 6.应用规则:将自定义规则应用到实际项目中。根据项目的需要,选择合适的工具和集成方式。确保规则自动应用,并及时检查代码中的问题。 总结起来,自定义Lua代码的扫描规则涉及了对扫描规则的了解、选择合适的工具、规则定义、实现规则、测试规则和应用规则等步骤。通过这个过程,可以根据项目的需要,定制适合的规则来提高代码质量和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热血枫叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值