Skip to content

MCS 代码风格介绍

前言

代码写出来,不只是给引擎看的,更是给未来的自己看的。一套统一的风格,能让你在几个月后翻回自己的脚本时,依然一眼就能读懂。

本文档推荐的一套约定,我们称之为 MCS(Miswanting Code Style)。它不是硬性规定,引擎也不会因为你不遵守就报错——但遵守它,你的脚本会更整洁、更少出错。你可以把它当作“默认答案”,在理解之后按自己的喜好调整。

缩进

两个半角空格表示一层缩进。函数体内的语句要缩进,复合语句的每一层再各缩进一次:

erb
@EVENTFIRST
  #Dim Money = 100
  IF Money > 50
    PRINTL 你是富人。
  ELSE
    PRINTL 你是穷人。
  ENDIF
  QUIT

缩进不会影响运行,但会影响阅读。让从属关系一眼可见,是缩进存在的全部意义。

命名

  • 变量名用能看懂含义的英文单词,首字母大写,如 MoneyDayPlayerName
  • 函数名用动词或动宾短语,如 ShowStatusGetItemCount
  • 不用 abxxx 这类无意义的名字——除非它真的只是临时的循环变量。
#Dim Money = 100      ; 好
#Dim m = 100          ; 不好

注释

  • 函数之前,用注释简单说明这个函数是做什么的;
  • 复杂的一行,在行末补一句解释;
  • 注释写“为什么”,而不是重复“做了什么”。
erb
; 计算玩家当前等级:每 100 金币升一级
#Dim Level = Money / 100

关于常量

EraBasic 支持用 #Dim CONST 定义常量。但如常量与变量中所讨论的,它在脚本层面带来的收益并不明确。

因此,MCS 不推荐在游戏脚本中使用常量,直接把值写在变量里即可。等有确切证据表明它能带来实际好处时,我们再更新这一条。

函数的组织

  • 每个函数只做一件事;
  • 相关的函数在文件里挨着放,并用注释分块;
  • 事件函数(@EVENTFIRST 等)建议统一放在 System.erb 里,作为游戏的“骨架”;
  • 通用的小工具函数可以单独放进 Utils.erb 之类的文件,方便复用。

一行太长怎么办

一行太长会难以阅读。可以在合适的位置换行,但要注意 EraBasic 的换行是有语法的({} 续行)。如果一段逻辑实在写不下,通常意味着它应该被拆成几个函数。

大小写

EraBasic 的命令习惯用大写(如 PRINTLIF),变量与函数名用驼峰式(如 PlayerName)。保持同一文件内的一致,比具体用哪种更重要。

小结

  • 两空格缩进,让层级清晰;
  • 名字要能看懂;
  • 注释解释“为什么”;
  • 不推荐使用常量;
  • 一个函数只做一件事;
  • 一致性比“绝对正确”更重要。

一份好风格的价值,不在于它有多严格,而在于它让下一个人(很可能是你自己)读起来有多轻松。祝你写得愉快!

GPL-3.0+ Licensed