帮助:模板
模板是一段可复用的文字或代码,是编写Wiki的利器。
本文将综述我们的模板,包括使用场景和设计思想,旨在为模板使用者和维护者提供参考。
要了解如何使用模板,请参阅:
本文假设读者掌握模板的基本概念和使用方法。
常用模板简介
施工中...
设计原则
设计模板应至少遵循以下原则。
单一职责
即“高内聚低耦合”。
如果一个模板提供多个功能,或者做多个事情,有以下缺点:
- 增加理解困难:看一个模板=看十个
- 增加维护困难:难以确定修改的影响。一个地方出错,其他功能也会受影响。
- 增加测试困难:测试一个功能很简单,测试一堆可能相互影响的功能很困难。
典型的负面例子是BWiki的模板:板块。 它提供了13个模板的功能。
如果修改其中一个子功能时出现了语法错误,导致分配功能的Switch提前结束,可能的异常表现是位于子功能代码后边的所有功能失效。 这会对分析、定位问题带来很大困难。
KISS原则(Keep It Simple Stupid)
设计应当保持简洁、单纯,不加入非必要的复杂性[1]:
- 不复杂化代码
- 不过度设计
- 不过早优化
- 不断重构
KISS原则最后的S并没有隐涵愚蠢的含义,而是恰好要求模板的设计是易使人理解的。
再复杂的模板,其使用者和未来的维护者也是广泛的BWiki用户。我们不能假设所有用户都是MediaWiki的使用专家。
设计和开发模板时,每多使用一个特性,就引入了一个新知识。这会增加对维护者的要求,使用者也更难理解模板的行为和工作原理。 缺少使用和维护的模板会逐渐被抛弃、替换。
合理使用模块
对于复杂的需求,可能要密集的嵌套使用解析函数。这常常导致「解析函数地狱」——阅读、维护困难。典型的是#arraymap函数。
此外,游戏通常可以提取数据数据,比如通过解包和脚本将数据自动整理成json,使用模块查询数据可以大大降低工作量。