我正在为自己制作的游戏编写自定义物理引擎,我的物理对象类具有大量变量(距离,速度,加速度,质量,重力,力,脉冲持续时间等。)。为每个变量创建setter和getter函数会影响性能吗?(在给定的时间至少有100个此类的实例)
还应该创建setter和getter吗?我听说公共变量确实是不好的做法,但是有很多变量,这是一个例外吗?
为每个变量创建setter和getter函数会影响性能吗?(在给定的时间至少有100个此类的实例)
可能没有。从理论上讲是可以的,但是实际上,调用额外函数以获得特定值的成本可以忽略不计。影响性能的唯一方法是,如果您始终不停地调用这些方法(例如,每秒5万次)。
还应该创建setter和getter吗?
可能没有。好的OO设计遵循名为“告诉,不要问”的准则。通常,您应该查看需要这些变量的操作,然后在类中实现这些操作,或者在具有访问权限的类中实现它们,或者使用其他模型(想到的是访客模式)。
我听说公共变量确实是不好的做法,但是有很多变量,这是一个例外吗?
拥有公共变量并不是一个坏习惯。当您对变量具有不变性时,使用公共变量是一种不好的做法。
例如,如果您有一个变量来测量物体的重量,则将要确保不能将其设置为无效值(例如负值或大得可笑的值)。如果将变量设为公共变量,则要么必须检查在客户端代码中对其进行修改的任何地方设置的值,要么放弃验证该值。
两者都是不好的,因为如果您有一个合适的设置者并带有验证,那么它们是不可能存在的错误。
简而言之,只有在您没有固定变量的情况下,才可以使用公共变量。
注意事项:
使用公共变量,如果可以随时设置变量类型允许的任何值(您没有固定变量)
如果您有不变式,请使用私有变量。
使用公共方法定义操作,而不是“访问内部变量”。
根据从客户端代码看时要执行的操作而不是内部实现中存在的变量来设计公共API 。
在这种情况下,getter和setter有时(很少)有意义,但这不是因为您在类中具有变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句