Lua 代码编写规范

Posted Linux大师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 代码编写规范的主要内容,如果未能解决你的问题,请参考以下文章

如何为罗技鼠标编写简单的 Lua 代码?

前端代码编写规范

Python代码编写规范

C#语言上位机研发代码编写规范

如何更规范化编写Java 代码

蒟蒻的代码规范与文档编写规范