同一条规则在两处实现(沙巴克战场入口一份、传送门一份),两份的边界写法不同——一个 >= 一个 >,边界值玩家从这边能进、从那边进不去,投诉即来。两处实现的先后顺序还可能互相矛盾。错误场景:
-- 入口A:战场入口
if lv >= 60 then
allowEnter()
end
-- 入口B:传送门
if lv > 60 then
allowEnter()
end
60 级玩家从 A 能进、从 B 不能进——同一规则两种边界,规则被写成了两条。
规则收敛为单一函数,所有入口共用。规范写法。示例代码如下:
local function canEnter(lv)
return lv >= 60
end
-- 入口A
if canEnter(lvA) then
allowEnter()
end
-- 入口B
if canEnter(lvB) then
allowEnter()
end
边界只写一遍——改规则改一处,两个入口永远一致。
三步验证:用 60 级角色分别走两个入口,复现一边能进一边不能进;抽公共函数后,同一角色在两入口结果一致;再全文检索数字 60,确认没有第三处散落的裸边界。
规则函数配常量定义,边界值不裸写。示例代码如下:
local ENTER_LV = 60
local function canEnter(lv)
return lv >= ENTER_LV
end
print(canEnter(59), canEnter(60))
输出 false 与 true——常量集中声明,调整门槛只动一个数字,判定一致从机制上保证。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 帮会人少时打不死召唤的目标,人多时又抢不到,时机全靠会长手点,纠纷不断。改为每日一次的定时召唤加伤害…
【游戏】 一、业务场景 30 人团本开荒,伤害按个人目标结算,近战几秒就把目标打空,后排毫无参与感。改为全团共享血池:目标总…
【语法】 一、隐蔽陷阱 账目表频繁单点改值又要频繁查前 n 项合计:朴素写法改值一步、查询要扫 n 个元素,查询一多整体就慢…
【游戏】 一、业务场景 想拉动日活,登录礼包要跟着连登天数走:第 1 天小奖,第 7 天大奖。发放核心就一行:按连登天数查阶…
【语法】 一、隐蔽陷阱 大数加法用字符串竖式解决了失真,两笔大数相乘怎么办?tonumber 相乘在 9 位乘 9 位时结果…
【语法】 一、隐蔽陷阱 两批任务分别每 6 分钟与每 8 分钟刷新一次,想知道它们同帧刷新的间隔,从 1 开始逐个试除到 4…