2 回答
TA贡献1789条经验 获得超10个赞
这完全取决于您对哪种操作进行更多的调整。您改变的current频率是否比改变的频率高offset?Python中没有首选的方法,但是程序中可能有一种方法。
根据您的示例,似乎您正在创建一个人们与他人互动的游戏。您提到了armor,speed玩家,并且被减速咒语击中。当你的球员得到由咒语放缓,你不想设置自己speed的东西,你想减少它。使用偏移量很容易做到这一点,这正是它的用途。但是,这也可以使用current来完成,并且两者的代码完全相同,即使含义不同:speed.current -= 10。
如果您想做一个相对较慢的动作(例如,将他的速度降低10%,而不是10mph),则可能会再次使用当前值:speed.current *= 0.9。再一次,这两个都可以通过以下offset版本实现:
speed.offset -= 10 // reduce by 10
speed.offset = speed.current * 0.9 - speed.base // reduce by 10%
正如我们在此处看到的那样,使用current相对缓慢可以使代码更易于阅读,并且大多数人会speed.current -= 50比看到更明显speed.offset -= 50。current在进行相对缓慢的操作时,它的使用速度也更快,因为计算出的东西更少。
因此,您可能经常需要两者,而且两者都不比另一个优越。我仍然会说和Crocker所说的一样,与一起使用current,可能对每个人都更容易理解,并且在进行相对减慢时会更清洁。
TA贡献1859条经验 获得超6个赞
我更喜欢第一个变体,其中base
和offset
是实际值,current
是计算出的有效值。但是,我不会添加设置器,因为该设置器应设置基本值还是偏移量是不确定的。请将有效值保留为只读。
另外,我至少会考虑将修饰符做成一个列表,这样可以更容易实现和调试。考虑增加速度的运动鞋,给+50。然后,喝一点药水,给予+ 10%。然后您再次脱下运动鞋,最后药水用完了。如果您使用此方法使此代码正确,那么它将在修改属性的位置将所有逻辑都包含在属性的外部。这只是我的直觉,您必须自己做出决定,因为只有您知道真正的代码及其应采取的措施。
添加回答
举报