程序是死的,程序设计是活的。
【用例】
有个技能叫火球术,有个天赋A可以让火球术击中时附加Buff,有个天赋B可以让火球术击中时附带击退效果。
【设计方案一】
只学习天赋A时,将火球术替换为技能A;
只学习天赋B时,将其替换为技能B;
AB天赋都学时,将火球术替换为技能C。
优点:不需要任何新增的数据模型,现有代码直接就能用;代码理解成本低,因为只是替换技能。
缺点:当多个天赋影响同一个技能时,一个技能就要配置CDEFGH技能。
【设计方案二】
新设计一种数据模型,用于描述技能局部的修改。
优点:无论学习几个天赋,火球术都依然是它本身。
缺点:这个数据模型定义起来很麻烦,比如动作游戏里要改变第N帧的击退力度。
【决策】
如果项目只会有一个天赋影响一个技能,或者项目特别赶时间出原型,方案一就合理。
否则方案二更合理。
【用例】
有个技能叫火球术,有个天赋A可以让火球术击中时附加Buff,有个天赋B可以让火球术击中时附带击退效果。
【设计方案一】
只学习天赋A时,将火球术替换为技能A;
只学习天赋B时,将其替换为技能B;
AB天赋都学时,将火球术替换为技能C。
优点:不需要任何新增的数据模型,现有代码直接就能用;代码理解成本低,因为只是替换技能。
缺点:当多个天赋影响同一个技能时,一个技能就要配置CDEFGH技能。
【设计方案二】
新设计一种数据模型,用于描述技能局部的修改。
优点:无论学习几个天赋,火球术都依然是它本身。
缺点:这个数据模型定义起来很麻烦,比如动作游戏里要改变第N帧的击退力度。
【决策】
如果项目只会有一个天赋影响一个技能,或者项目特别赶时间出原型,方案一就合理。
否则方案二更合理。