zoukankan      html  css  js  c++  java
  • 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  -- 更快,推荐

              原因:[]和#避免了高层的函数调用开销

  • 相关阅读:
    推荐一本SQL经典书籍
    准备升级包包版游戏大厅
    《博客园精华集软件工程分册》第三轮筛选结果
    (翻译)《Expert .NET 2.0 IL Assembler》 第八章 基本类型和签名(一)
    如何输入人名间的顿号
    推荐一个下名人传记电子书的好地方
    asp.net 2.0 中使用web.config存储数据库连接字符串
    Asp.Net小技巧之在client端调用server端事件:
    C#编码好习惯
    把ip转换成对应的城市名
  • 原文地址:https://www.cnblogs.com/puyahuazhijia/p/5932070.html
Copyright © 2011-2022 走看看