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 编程风格的方方面面.在遵守这个文档的条件下 ...
随机推荐
- android的四层体系结构,基于mvc三层结构浅析
从多方面理解Android体系结构 1.以分层的方式来看Android 安卓体系结构分为四层. 首先看一下官方关于Android体系结构的图: 1).Linux Kernel:负责硬件的驱动程序.网络 ...
- mac 下打开多个Eclipse
在Mac下只能打开一个Eclipse工具. 使用下面命令,在控制台中输入,可以打开多个Eclipse. open -n xx/xx/eclipse.app 例子: open -n /Users/use ...
- 用Canvas制作loading动画
上一篇讲到用SVG制作loading动画,其中提到了线性渐变在扇形区域中的问题,并且用SVG SIML语法制作的loading动画并不是所有浏览器都兼容,所以现在用Canvas重新实现了一遍. 这里与 ...
- Esfog_UnityShader教程_NormalMap法线贴图
咳咳,好久没有更新了,一来是这段时间很忙很忙,再来就是自己有些懒了,这个要不得啊,赶紧补上.在前面我们已经介绍过了漫反射和镜面反射,这两个是基本的光照类型,仅仅依靠它们就想制作出精美的效果是远远不够的 ...
- 怎样把excel的数据导入到sqlserver2000数据库中
在做程序的时候有时需要把excel数据导入到sqlserver2000中,以前没从外部导入过数据,今天刚做了一下导入数据,感觉还是蛮简单的,没做过之前还想着多么的复杂呢,下面就来分享一下我是如何把ex ...
- eclipse下的webservice开发
关于eclipse下的webservice开发,有非常多的教程,这里只记下学习过程中的弯路: 1.无论是CXF模式还是AXIS模式,在出现start server之后,点击next报错:"s ...
- 查看最点CPU的语句
select c.last_execution_time,c.execution_count,c.total_logical_reads, c.total_logical_writes,c.total ...
- verilog断言(SVA:systemverlog assertion)语法 ---- 转载
转载自:http://blog.sina.com.cn/s/blog_4c270c730101f6mw.html 作者:白栎旸 断言assertion被放在verilog设计中,方便在仿真时查 ...
- 两系统用asp.net forms 身份验证方式实现跨域登录信息共享
1.两个系统的 web.config 都配置为 forms 验证方式( system.web —> authentication 节点) 2.在两个系统的Web.config里配置相同的 sys ...
- Jmeter组件6. SOAP/XML-RPC Request
Jmeter测试SOAP的web services现在有两种方式 第一是使用SOAP/XML-RPC Request组件,第二使用HTTP Request组件 Send SOAPACtion, 同ht ...