教程-9-2-变量使用规则

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为什么连变量怎么用都要教?:

也许你会对此感到困惑:我已经在教程7-2中教过变量怎么用了,为毛现在还要来提这件事情?很简单,那就是会用变量和用得好完全是两码事。很多新手会为触发感到很头痛,觉得难以理解,不仅仅是因为学习上的困难,还有一部分原因是因为他们并没有养成良好的习惯,使得自己的变量和触发器坑了自己。比如说给变量起名字的时候没有规律,导致后期变量的数量变多时自己都记不清自己哪个变量是做什么用的。这就增加了你理解触发的成本,在看一个触发之前你先要想这个名字的含义,才能明白这个变量是做什么用的,进而明白这个触发的功能。假如说你在起变量名字的时候就有一个规律,能让人一看到变量的名字就能得知它是干什么用的话,就会让你轻松很多。

我说这些话不是没有依据的瞎扯,而是我的亲身体验,变量的混乱能让你无法理解自己之前做过的触发器,让你烦躁,打击你的士气,导致你的弃坑(这也是亲身经历)。所以说千万不要忽视这一点。下面就是我个人总结出来的一些经验,并且在编程的发展过程中,也有很多人总结过类似的经验(百度“匈牙利命名法”之类的)。

变量的命名:

为什么我要注意变量的命名?只要我自己能看懂不就行了吗?变量的名字就算起得跟花一样,实际上除了会让地图的大小发生几b的变化以外还会产生什么影响吗?

是的,从理论上来说变量的名字随便你怎么起。但是从实用的角度上来讲,人是会遗忘的,不要说这么一大堆变量的名字所代表的含义了,你有些时候连自己的银行密码,开自己家的门用哪把钥匙都会忘记(才不是我自己都会忘记这些小事呢),你怎么能保证你能记得几十个甚至上百个不同的名字所代表的含义?

通常人都会意识到这个问题,并且试图让变量的名字看起来更有规律一些,让你一眼看过去就能明白它的作用。常见的方法就是用一段汉语拼音来描述一个变量的作用,比如说“Shengqishideshenshengzhiguangdejishuqi”(圣骑士的神圣之光的计数器)——这TM谁也不会起这么脑残的变量名,首先变量名根本就不会允许这么长的名字,其次就算允许了,虽然说这个名字确实能让人读完了之后就能明白它是做什么的,但是首先这个名字就绝对没有人想要读下去。所以,通常我们都会认同这样的一条规律:

1.变量的名字应该同时具备简短和包含信息量大的特点。

这样想的话很简单,我只要把“Shengqishideshenshengzhiguangdejishuqi”给变成“SQSDSSZGDJSQ”不就行了?SQS = 圣骑士,D = 的,SSZG = 神圣之光,JSQ = 计时器,又精简,包含的信息量又大,但是很可惜,依然不会有人想要去读这么一个技能的名字。就好像你跟别人说“GGNE”别人不会立刻反应过来是“冈格尼尔”一样(这是一个梗,知道的人不多),谁TM会一看到“SQS”就反应过来是圣骑士啊?这样的话看到这个名字还得先猜半天这几个字母究竟是哪几个拼音的缩写。而且这个变量名字中SQS和SSZG和JSQ 之间的间隔符号都是D,看上去就跟D也是这几个名字的一部分一样,读起来简直就和解读摩斯密码一样困难。所以说这里我们会碰到两个问题:一是在追求精简而压缩名字的同时,不可避免的会让名字包含的信息难以解读(解压缩的过程太费脑力);二是名字中包含的信息,要想一个办法把它们区分开来,不然谁知道是SQSD是一段信息还是SQS是一段信息?所以我们也都还会认同这样的一条规律:

2.变量的名字解读起来所耗费的精力越少越好

那么就如同上面所说的,要让一个变量符合第二条规律,所面临的问题大致可以分为两个方面:怎么样让名字压缩但是解压的时候又很轻松,以及怎么样能让变量名字中包含的不同信息区分开来。首先针对第一个问题,你就不得不承认在用字母起名的时候,英文名要比中文名有显著的优势。中文的同声字太多了,但是英文单词很少有读音相同的,并且对于一个拼

音来说,声母和韵母同样重要,缩写掉韵母的话信息一下就少了一半,然而对于同声词很少的英文(相对而言)来说,情况要稍微好一些。所以说,只要你在英语考试中还能勉强及格,我就不会推荐你使用汉语拼音的缩写来当作变量的名字,因为拼音一般要更长,并且在压缩之后,人肉解压耗费的精力要比英文更多(除非你英语很烂)。但是我们仍然不可避免的要面临解压缩的这个问题——即使是在英文单词压缩之后,也会出现歧义或者难以辨识的情况导致解压的难度加大,所以说在这个方面我们必须有所取舍。针对这种问题我的经验就是:

a.在压缩名字之前,先权衡一下压缩与解压的性价比(废话)。

b.建立一套压缩的规则,比如我喜欢把压缩的名字长度限制在3~4个字符,并且对于

日文名字,取罗马音的声母和其他比较关键的字母作为压缩字符。例如琪露诺

->Cirno->Crn,按照一套固定的标准来进行压缩可以减少歧义。

c.尽量在固定的情况下进行压缩,比如通常来说我只会压缩人物名字,或者触发中标

示和分类的名字,但是对于描述触发作用和变量类型的单词,我是基本上不会压缩

的。

d.对于经常出现的单词进行压缩,这样比较容易辨识。

那么我们再来考虑一下第二个问题,怎么样有效的把名字中包含的信息给分隔开来。这个问题考虑起来就比较简单了,以下列出好几种可以使用的方法:

a.每一段信息的长度固定,比如说每3个字符组成一段有意义的信息,这样在解读变

量名字的时候就只需要三个字符三个字符的读就可以正确的区分不同的信息了。

b.使用大小写进行信息之间的分隔,比如说一段信息一定会以大写开头,后面跟着的

字母全都是小写,这样在视觉上也可以起到较好的效果

c.很多人都会忽视,变量的名字除了允许大小写字母和数字以外,还有下划线“_”。

可以将下划线当成信息的分隔符,并且这也确实是一种常用的方法。

那么在解决了这两个问题之后,变量的名字大概会更加容易解读一些,至少不用你猜半天“这个名字,这几个字母到底代表着什么意思啊?”。

接下来想想变量命名的规律问题。我们可以让一个变量名称包含一定量的信息,但是要怎么合理的安排变量名称包含的信息?

还是打个比方,比如说我要做一个持续性的神圣之光,那么我会需要用一个单位变量来记录神圣之光持续作用的那个单位。这个变量要怎么命名呢?假设我在这个技能中只用到了这么一个单位变量的话,只要给这个变量起名为“SSZG”就行了吧?反正这个技能就使用了这么一个变量。这样固然是可以,然而假如技能要用到的变量多了怎么办?之前我做过一个视频演示了一个抛冰球的技能,在没有使用YDWE功能的条件下,这个技能用到了大概10个左右的变量。这么多变量要怎么命名?“SSZG1”,“SSZG2”?显然这样是不行的,光是1和2的话,并不能表达任何意思,很快你就会忘记每个变量是干什么用的。所以说,此时比较合理的一个起名格式是“从属技能名+描述名”,比如说神圣之光的一个计数器就是“SSZG_JSQ”,神圣之光的一个目标,就是“SSZG_MB”。这样看上去似乎好了一些,但是有些时候描述名之间也会撞,比如说一个穿刺原型的技能既可以有目标地点,也可以有目标单位,而两者的描述名都可以是“目标”或者说“MB”和“Target”,这样的话变量不是撞名字了么?不过通常大家都能想到是单位类型的话,就加上一个“DW”或者“Unit”,是点类型的话,就加上一个“D”或者“Point”。然而这种需要加上类型来区分不同变量的情形,我觉得是比较常见的,因此我觉得变量的取名格式可以是“从属技能名+ 变量类型名+ 描述名”,这三个名字的重要度是按照先后顺序排列的,在技能用到的变量比较少的情况下,可以不需要描述名来区分变量,仅仅只需要变量类型名就够了。比如说神圣之光的用于记数的整数变量可以是“SSZG_ZS_JSQ”(神圣之光_整数_计数器)。给变量加上一个类型名也可以增加变量名的可读性,并且在变量多了的时候,你可以依据变量的类型来进行查找

相关文档
最新文档