lua 代码风格
参考 http://www.kancloud.cn/kancloud/lua_style_guide/66327
1、命名
1、命名法:小驼峰命名法,大驼峰命名法(Pascal命名法),小下划线命名法,大下划线命名法。 采用自己喜欢的和熟悉的,不要混用
2、作用域范围更大的变量名要比作用域小的变量名具有更多的描述信息
3、对于布尔型的变量,通常前缀加上is可以方便理解
4、包名和模块名通常很短,并且全部小写,单词间并没有下划线区分,比如:文件读取库名为lfs,表示 lua file system
5、文件名通常采用小驼峰命名法
2、作用域:
1、对于变量,在一切能使用local修饰的情况下,使用local进行修饰
2、局部变量的作用域结束,被系统清理
3、注释
1、通常在-- 前加一个空格
2、对于接口注释
-- Delete a session
-- @param id session identification
4、惯用法(精巧用法)
1、尽可能使用local修饰变量
原因:1、使用local的变量会在作用域结束时释放其内存
2、使用local的变量会比全局变量的存取更快
3、全局变量会污染全局的命名空间
2、直接判断真假值
-- 不推荐
if obj ~= nil and willbreak == false then -- ... end
-- 推荐
if obj and not willBreak then -- ... end
原因:lua在逻辑判断时将所有非false 和 非nil的逻辑判断视为真,反之视为假。不需要再与布尔值和nil进行对比。
但是,在需要对false和nil进行区分时,需要写明== : obj==nil 和 obj ==false
3、默认参数的实现
function setName(name) name = name or "noName" end
4、一行代码实现表的拷贝
u = {unpack(t)}
5、一行代码判断表是否为空
用#t==0 并不能判断表是否为空,因为#预算符会忽略所有不连续的数字下标和非数字下标
正确做法: if next(t) == nil then -- 表为空 end 因为表的键可能为false,所以必须与nil比较,而不能直接使用~next(t)来 判断表是否为空
6、更快的插入代码
tabel.insert(t,value) -- 更慢,不推荐
t[#t+1] = value -- 更快,推荐
原因:[]和#避免了高层的函数调用开销
lua 代码风格的更多相关文章
- Python 代码风格
1 原则 在开始讨论Python社区所采用的具体标准或是由其他人推荐的建议之前,考虑一些总体原则非常重要. 请记住可读性标准的目标是提升可读性.这些规则存在的目的就是为了帮助人读写代码,而不是相反. ...
- .NET 项目代码风格要求
原文:http://kb.cnblogs.com/page/179593/ 项目代码风格要求 PDF版下载:项目代码风格要求V1.0.pdf 代码风格没有正确与否,重要的是整齐划一,这是我拟的一份&l ...
- AngularJS之代码风格36条建议【一】(九)
前言 其实在新学一门知识时,我们应该注意下怎么书写代码更加规范,从开始就注意养成一个良好的习惯无论是对于bug的查找还是走人后别人熟悉代码都是非常好的,利人利己的事情何乐而不为呢,关于AngularJ ...
- 自动生成查找组件的lua代码
本篇主要解决的问题是使用lua脚本编写unity业务逻辑时,自动生成一些查找组件及绑定控件事件的lua代码! 现在很多unity项目都是用ulua作为热更新解决方案,因此需要用lua来写相关的逻辑,经 ...
- 【openresty】向lua代码中传递参数
前面介绍FormInputNginxModule模块时,明白了openresty如何获取post提交的数据. 然后,如果需要通过lua处理这些数据,需要把数据作为参数传递到lua中,lua获取了这些数 ...
- Visual Studio Code 使用 ESLint 增强代码风格检查
前言 在团队协作开发中,为了统一代码风格,避免一些低级错误,应该设有团队成员统一遵守的编码规范.很多语言都提供了Lint工具来实现这样的功能,JavaScript也有类似的工具:ESLint.除了可以 ...
- plain framework 1 参考手册 入门指引之 代码风格
代码风格 介绍 介绍 框架自身采用了google的C++风格,作者也鼓励在你的应用中使用此风格,有关此风格你可以查阅相关资料了解.下面是一段plain framework中的代码,以便大家参考: 你可 ...
- 对 JimmyZhang 老师的文章《项目代码风格要求》的一些个人观点
Jimmy Zhang 老师是博客园中我最佩服的人之一,今天看了他的文章<项目代码风格要求>觉得大部分地方我都很认同,工作中也是强迫自己也要按照规范来编程.下面是我的一些个人观点,想贴出来 ...
- python代码风格-PEP8
转载自http://www.douban.com/note/134971609/ Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下 ...
随机推荐
- Sorry, but the Android VPN API doesn’t currently allow TAP-based tunnels.
Sorry, but the Android VPN API doesn’t currently allow TAP-based tunnels. Edit .ovpn configfile “dev ...
- [转]Amazon AWS亚马逊云服务免费一年VPS主机成功申请和使用方法
今天部落将再次为大家介绍如何成功申请到来自亚马逊的Amazon AWS免费一年的VPS主机服务.亚马逊公司这个就不用介绍了,是美国最大的一家网络电子商务公司,亚马逊弹性计算云Amazon EC2更是鼎 ...
- 在IIS7中ASP.NET MVC3网站中建立gcc编译服务时要注意的问题
1. 正常配置下调用gcc总是失败,虽然在环境变量中配置了gcc路径,但提示找不到gcc编译程序: 2. 使用全路径调用gcc,也是失败,提示cc1.exe编译失败,失败代码53: 3. 通过远程桌面 ...
- 外壳exe通过反射调用dll时
外壳exe通过反射调用dll时,dll是 4.0的框架,外壳exe也需要编译成4.0的框架,如果dll本身有调用32位的dll,那么外壳exe也需要编译成32位. 调试时报的那个错,直接继续运行,不影 ...
- 通过rem编写自适应移动端要点
直接上干货 1,dpr 苹果手机像素是2 普通安卓机是1 也就是说1像素下苹果需要的像素点是安卓机的两倍 所以一个需要15x15显示的图像安卓机仅需要提供15X15即可显示清楚 苹果手机需要要30X3 ...
- Maven多环境打包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- python基础学习
1 list () 定义 2 dict() 转化为字典 3 tuple() 转化为元组 4 sort() 和 sorted()区别 5 a.sort(key=lambda ...
- ios10 no route to host
IdTCPClient1 ios10 no route to host IOS 9 正常 IOS10 出错,参考下面的设置解决问题 http://www.sh-huhe.com/solution/14 ...
- python操作mysql数据库
连接数据库 输入值 存入数据库 关闭 import string import mysql.connector conn=mysql.connector.connect(user='root',pas ...
- phpMyAdmin登录出错
问题:在网页上登录phpMyAdmin后出错 You don't have permission to access /phpMyAdmin/ on this server. 查询找到解决方法,记录一 ...