lua代码规范

lua代码规范

常用命名类型
– PascalCase(帕斯卡)大驼峰写法:每个单词首字母大写,字母之间不能有空字符
– 例:DailyChallenge、GameModel

– camelCase 小驼峰写法:第一个单词首字母小写,之后的单词首字母大写,字母之间不能有空字符
– 例:dailyChallenge、gameModel

– Snake_case 蛇形写法:每个单词首字母不限大小写,但是单词之间用下划线隔开
– 例:daily_challenge、game_Model、Game_Model

– 匈牙利命名法:属性+类型+变量描述
– 例:g_pPlayer(g_表示是全局变量,p表示是指针,Player表示变量代表玩家) 详细信息链接:https://baike.baidu.com/item/匈牙利命名法/7632397

– 类名 使用大驼峰写法 Player
local Player = class(“Player”)

– 常量 单词使用全大写的蛇形写法 ADULT_MIN_AGE
Player.ADULT_MIN_AGE = 18

– enum,仿枚举类型 使用大驼峰写法
local MoveState = {
Standing = 1,
Walking = 2,
Running = 3,
}
Player.MoveState = MoveState

local Skin = {
id = 1,
attackAddition = 20,
}
Player.Skin = Skin

– 成员函数(ctor、 isAdult)、成员变量(name、scoreEnglish) 使用小驼峰写法
– 但是私有成员变量和方法以下划线开头(_instanceId),私有成员变量和方法不应在类外部被使用
function Player:ctor()

-- 私有变量
self._instanceId = 0


-- 所有非布尔值的变量名必须使用(简明、没有歧义、具有描述性的)名词
-- self.name、 self.age、self.score 


-- 所有bool变量名使用大驼峰写法,但是要以小写b为前缀;不要使用询问动词(Is、Has)
-- bad 
-- self.bIsAdult = false
-- self.bHasAdRemoved = false

-- good
self.bAdult = false
self.bAdRemoved = false


-- 不要使用bool变量表示复杂状态或相互依赖的状态,请使用enum枚举代替
-- bad
-- self.bRunning = false
-- self.bWalking = false
-- self.bStanding = false

-- good
self.moveState = MoveState.Running


-- 变量命名时要参考上下文去除冗余信息
-- bad
-- self.playerId = 123
-- self.playerScore = 90

-- good 
self.id = 123
self.score = 90


-- 变量命名不要携带基础值类型信息[string(str)、number(int、double、float)]
-- bad 
-- self.nameStr = "LiMing"
-- self.ageInt = 10

-- good
self.name = "LiMing"
self.age = 10


-- 变量命名中应该包含非基础值类型信息(Struct、Class、Interface)
-- 但是命名也要考虑上下文,如果类拥有该属性(皮肤是角色的组成部分),那么该属性命名时不需要额外的修饰,使用 skin 而不是 mySkin
-- 如果类不拥有该属性(目标敌人不属于炮塔的组成部分),那么该属性命名时需要额外限定描述,使用 targetPlayer 而不是 player
-- bad
-- self.mySkin = Skin.new()
-- self.player = Player.new()

-- good
self.skin = SKin.new()
self.targetPlayer = Player.new()

-- Array 数组 命名规则如上,但要采用复数形式
-- self.targetPlayers、self.skins (or / not)self.targetPlayerList、self.skinList
self.fishs = {}
self.fishList = {}


-- Map 字典 命名规则如上,但要加上后缀 Map
self.sceneMap = {}

end

– 私有函数
function Player:_swithSkin(skin)
end

– 函数 所有函数应该是动词,函数和事件都是要执行某种形式的动作,无论是获取信息、计算数据、或者引起其他反应
– 所以函数需要被命名为现在进行时动词,同时要结合上下文表达出要做的事情
– onResponse 事件响应函数是个例外,不需要以动词开头

– bad
– dead -是已经死了?还是将要死?
– rock
– processData - 没有描述清楚要处理什么数据,容易产生歧义
– playerState - 名词将会产生歧义

– good
– receiveMessage
– sortPlayerArray
– updateTransform
– getCoordinates
– isEnemy - "is"是动词

– 需要返回bool值的函数,应以询问句形式命名,以is、has、can等开头
– isDead
– isAlive
– isVisible
– hasWeapon
– canReloaded

function Player:isAdult()
return self.age >= ADULT_MIN_AGE
end

– 事件处理类型函数应该以on为开头,on后边接动词
– 和 on 组成常规搭配的词组(例:onDeath)不受on后边接动词限制
function Player:onClickBtnStart()
end

function Player:onDeath()
end

function Player:onPickUp()
end

– 分类 当一个类包含大量属性时,应该考虑将部分相关属性拆分到分类里
– bad
local Card = {
x = 0,
y = 0,
r = 0,

rank = 10,
suitColor = "Black",
suitKind = "Hearts",

bFeatherCovered = false,
featherCount = 2,

bIceCovered = false,
iceCount = 1,

}

– good
local Transform = {
x = 0,
y = 0,
r = 0,
}

local PokerFace = {
rank = 10,
suit = “Hearts”,
color = “Black”,
}

local EffectFeather = {
bCovered = false,
count = 2,
}

local EffectIce = {
bCoverd = false,
count = 1,
}

local Card = {
transform = Transform,
pokerFace = PokerFace,
effectFeater = EffectFeather,
effectIce = EffectIce,
}

return Player

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Debug_尚尚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值