2 回答

TA貢獻1789條經(jīng)驗 獲得超10個贊
這完全取決于您對哪種操作進行更多的調(diào)整。您改變的current頻率是否比改變的頻率高offset?Python中沒有首選的方法,但是程序中可能有一種方法。
根據(jù)您的示例,似乎您正在創(chuàng)建一個人們與他人互動的游戲。您提到了armor,speed玩家,并且被減速咒語擊中。當你的球員得到由咒語放緩,你不想設置自己speed的東西,你想減少它。使用偏移量很容易做到這一點,這正是它的用途。但是,這也可以使用current來完成,并且兩者的代碼完全相同,即使含義不同:speed.current -= 10。
如果您想做一個相對較慢的動作(例如,將他的速度降低10%,而不是10mph),則可能會再次使用當前值:speed.current *= 0.9。再一次,這兩個都可以通過以下offset版本實現(xiàn):
speed.offset -= 10 // reduce by 10
speed.offset = speed.current * 0.9 - speed.base // reduce by 10%
正如我們在此處看到的那樣,使用current相對緩慢可以使代碼更易于閱讀,并且大多數(shù)人會speed.current -= 50比看到更明顯speed.offset -= 50。current在進行相對緩慢的操作時,它的使用速度也更快,因為計算出的東西更少。
因此,您可能經(jīng)常需要兩者,而且兩者都不比另一個優(yōu)越。我仍然會說和Crocker所說的一樣,與一起使用current,可能對每個人都更容易理解,并且在進行相對減慢時會更清潔。

TA貢獻1859條經(jīng)驗 獲得超6個贊
我更喜歡第一個變體,其中base
和offset
是實際值,current
是計算出的有效值。但是,我不會添加設置器,因為該設置器應設置基本值還是偏移量是不確定的。請將有效值保留為只讀。
另外,我至少會考慮將修飾符做成一個列表,這樣可以更容易實現(xiàn)和調(diào)試??紤]增加速度的運動鞋,給+50。然后,喝一點藥水,給予+ 10%。然后您再次脫下運動鞋,最后藥水用完了。如果您使用此方法使此代碼正確,那么它將在修改屬性的位置將所有邏輯都包含在屬性的外部。這只是我的直覺,您必須自己做出決定,因為只有您知道真正的代碼及其應采取的措施。
添加回答
舉報