MCS 代码风格介绍
前言
代码写出来,不只是给引擎看的,更是给未来的自己看的。一套统一的风格,能让你在几个月后翻回自己的脚本时,依然一眼就能读懂。
本文档推荐的一套约定,我们称之为 MCS(Miswanting Code Style)。它不是硬性规定,引擎也不会因为你不遵守就报错——但遵守它,你的脚本会更整洁、更少出错。你可以把它当作“默认答案”,在理解之后按自己的喜好调整。
缩进
用两个半角空格表示一层缩进。函数体内的语句要缩进,复合语句的每一层再各缩进一次:
erb
@EVENTFIRST
#Dim Money = 100
IF Money > 50
PRINTL 你是富人。
ELSE
PRINTL 你是穷人。
ENDIF
QUIT缩进不会影响运行,但会影响阅读。让从属关系一眼可见,是缩进存在的全部意义。
命名
- 变量名用能看懂含义的英文单词,首字母大写,如
Money、Day、PlayerName; - 函数名用动词或动宾短语,如
ShowStatus、GetItemCount; - 不用
a、b、xxx这类无意义的名字——除非它真的只是临时的循环变量。
#Dim Money = 100 ; 好
#Dim m = 100 ; 不好注释
- 函数之前,用注释简单说明这个函数是做什么的;
- 复杂的一行,在行末补一句解释;
- 注释写“为什么”,而不是重复“做了什么”。
erb
; 计算玩家当前等级:每 100 金币升一级
#Dim Level = Money / 100关于常量
EraBasic 支持用 #Dim CONST 定义常量。但如常量与变量中所讨论的,它在脚本层面带来的收益并不明确。
因此,MCS 不推荐在游戏脚本中使用常量,直接把值写在变量里即可。等有确切证据表明它能带来实际好处时,我们再更新这一条。
函数的组织
- 每个函数只做一件事;
- 相关的函数在文件里挨着放,并用注释分块;
- 事件函数(
@EVENTFIRST等)建议统一放在System.erb里,作为游戏的“骨架”; - 通用的小工具函数可以单独放进
Utils.erb之类的文件,方便复用。
一行太长怎么办
一行太长会难以阅读。可以在合适的位置换行,但要注意 EraBasic 的换行是有语法的({} 续行)。如果一段逻辑实在写不下,通常意味着它应该被拆成几个函数。
大小写
EraBasic 的命令习惯用大写(如 PRINTL、IF),变量与函数名用驼峰式(如 PlayerName)。保持同一文件内的一致,比具体用哪种更重要。
小结
- 两空格缩进,让层级清晰;
- 名字要能看懂;
- 注释解释“为什么”;
- 不推荐使用常量;
- 一个函数只做一件事;
- 一致性比“绝对正确”更重要。
一份好风格的价值,不在于它有多严格,而在于它让下一个人(很可能是你自己)读起来有多轻松。祝你写得愉快!