![]() |
1
4
两者都是好的-在一定的常识范围内。 后一种方法将节省重新分配对象的时间,因此以这种方式回收对象将更为有效—在您的特定示例中,收益可能与此无关,除非堆碎片是一个问题(例如,在RAM非常有限的嵌入式应用程序上)。
所以一般来说,我建议使用“创建一个新对象”的方法(它遵循“最少惊喜”的原则,并且不太可能让其他来处理代码的程序员感到困惑),除非存在性能问题(例如,在手机这样的嵌入式应用程序上,您的资源非常有限,不希望出现碎片堆),在这种情况下,“重用现有对象”可能是一个明智的解决方案。 |
![]() |
2
4
我相信两种解决方案都是好的。从内存管理的角度来说,将食物重新定位到另一个位置是不容易出错的,但是由于垃圾收集的原因,您不应该太在意这一点。 我认为,虽然实例化一个新的食物对象更符合逻辑,更接近现实生活中的模型,但重新定位更有效。 |
![]() |
3
1
OOP关注的主要问题不是食物是否重新实例化还是重新定位,而是这种行为在对象之外保持透明。游戏引擎应该告诉对象“你被吃掉了”之类的,但是对象内部如何处理这些不应该被游戏引擎知道。如果在内部,对象保持一个“food”的单子,“consume”方法只是用新的值重新生成food对象,那就好了。这些都是“食物”实现的内部部分,只是不应该在那个类之外知道。 |
![]() |
Schadre · C-plus编码错误 2 年前 |
![]() |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 2 年前 |
![]() |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
![]() |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |