38、Lua 代码编写规范

本文档介绍了Lua代码编写的规范,包括命名约定(小写字母、驼峰命名法、帕斯卡命名法),文件结构组织,如添加功能描述、模块限定词,以及代码风格(分隔、缩进、注释)。强调了调试工具的使用和优化策略,以提高开发效率和代码可维护性。
摘要由CSDN通过智能技术生成

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)),这样便于进行热更新

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

例如:

--此函数检测是否可以从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
  1. 函数与函数间、以及一些定义之间加上空行;

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

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

  4. 短小的注释使用–;较长的注释使用–[[]];

  5. assert函数开销不小,请慎用;

  6. Lua类设计时,用元表来实现oop;
    不要直接增加函数成员,因为直接增加函数成员会导致内存增加并且在jit下执行效率和用元表方式无差异。

  7. 文件使用UTF8格式;

分隔和缩进

  1. 使用空行;

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

  • 在方法之间

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

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

  1. 使用空格符;

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

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

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


function m1(year, month)

end
  • 在for语句时,如:
fork, v in pairs(t) do

end
  • 在下列情况下不要使用空格。

例如:
函数定义时:

function test1(a)

end

不要这样:

function test1( a )

end

函数调用时:

test1(3)
-- 不要这样
test1( 3 )

不要如此的原因在于

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

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

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

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

  3. 使用缩进;

在下述情况下应用缩进

  • 类中的成分

  • 方法体或语句块中的成分

  • 换行时的非起始行

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

代码建议

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

例如:

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

  2. 高级特性尽可能不用

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

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

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

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

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

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

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一名技术极客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值