今天在游戏过程中,遇到了输入验证码的情况,是防止玩家使用外挂程序的,突然意识到,在我写的挂机功能模块中要屏蔽掉这个检验验证码的功能,找到验证码的面板函数Panel_CheckSJJL(url),首先想到的做法是,在每个要执行这个函数的前面加一个判断,如果没在挂机则执行,否则就跳过了。
if not Guajiing then
Panel_CheckSJJL(url)
end
这样就像我们平时做事的逻辑,如果我们要上班,那么我们就会去公司,公司就好像上班的入口,如果我们不上班我们就不去公司,不上班的情况有好多种,比如放假,生病。。。我们要在每一种情况前进行判断,然后执行是否去公司这个动作,虽然我们平时的逻辑是这样,但是如果在程序中按照这样的逻辑写,而且,执行这样验证码的地方有很多的话,我们就要在每个可能的地方加上判断,这样即不能保证没有疏漏,也让代码的可读性降低,耦合性增大,之后如果有其他改动,还得花精力把所有这些判断都找出来去改,又或许过段时间,你在看前面这段的判断,都找不到为什么要这么判断一下了,所以我们应该在Panel_CheckSJJL(url)内部进行判断:
function Panel_CheckSJJL(url)
if Guajiing then return end--Jacky test 如果挂机则没有验证码的检测
……
end
那么我们不用花精力一个一个的去找,因为所以可能的入口最后都会进到这个函数中来,我们在函数里进行统一的判断,以后如果有修改也好改,乳沟怕程序不好读,那么一行注释也就解决问题了,不像上面一种可能每个判断都要跟一行注释,这可能跟我们平时的逻辑不一样,虽然我们不上班,但我们不判断,还是去公司,去了之后再判断,发现不上班,再什么都不做,闪人。这样的逻辑可以让程序代码风格更加统一,不用在每个出入口都检测,导致发生疏漏。