是将引用传递到链下更好,还是使用公共静态变量更好
本文关键字:更好 变量 静态 引用 | 更新日期: 2023-09-27 18:21:34
假设我们有一个Game类。
游戏类需要向下传递对其spritebatch的引用。也就是说,类调用一个传递它的方法,然后该方法将它传递给其他方法,直到它最终被使用。
这对表现不好吗?只使用静力学更好吗?
不过,我看到了statics的一个明显缺点,即无法在同一个应用程序中创建重复的功能。
回答您的问题并不容易,因为您没有特别提到需求,但通常我可以给您一些建议。
- 始终考虑封装:如果属性未在其他位置使用,则不要公开这些属性
- 性能:对于引用类型,没有任何性能损失,因为它们已经是引用类型。但是,如果您的类型是值类型,则性能损失非常小
因此,存在设计或性能权衡,除非您的方法被调用数百万次,否则您永远不必考虑公共静态属性。
所有东西都有缺点和优点。
从性能的角度来看,这是好还是坏,取决于计算密集程度以及在游戏中使用该代码的频率。
所以,以下是我对这个问题的考虑。
类传递参数:
Cons:在堆栈上传递更多变量,将其推送到函数调用中。这很快,但同样,这取决于你所说的代码是如何使用的,所以没有可以带来一些好处,这就是为什么在cons中插入这一点。
优点:您明确表示,调用堆栈顶部的函数需要该参数来进行读取和/或写入,因此查看该代码可以很容易地想象您的调用的语义依赖性。
像静态一样使用:
缺点:没有明确的证据(如果不是通过直接的知识或良好的书面文档)表明哪些参数会或可能影响该函数中的微积分。
优点:对于链中的所有函数,您不能将它传递到堆栈上。
我个人建议:将其用作参数,因为这清楚地表明了调用代码所依赖的内容,并且即使存在一些可测量的性能缺陷,也很可能与您的情况无关。但是,正如Rico Mariani一直建议的那样:测量、度量和。。。
Statics通常不是最好的方法。因为如果以后你想创建多个实例,你可能会遇到麻烦。
当然,传递引用会消耗一些性能,但根据实例的创建量,这或多或少会很重要。除非你每隔一小段时间就创建数百万个对象,否则这可能是一个问题。