有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如果类都包含很多有用的类变量,它会对性能产生影响吗?

每当我编写一个新类时,我都会使用大量的类变量来描述该类的属性,直到我回顾我键入的代码时,我看到40到50个类变量,无论它们是公共的、受保护的还是私有的,它们都在我定义的所有类中被显著使用

尽管类变量主要由原始变量组成,如布尔、整数、双精度等,但我仍然有一种不安的感觉,即我的一些类中有大量的类变量,可能会对性能产生影响,尽管它们可以忽略不计

<>但是如果尽可能合理,如果考虑无限RAM大小和无限java类变量,java类可能是RAM中的无限大内存块,块的第一部分包含类变量分区,而块的其余部分包含java类中类方法的地址。有了这么多的RAM,它的性能非常重要

但以上这些并没有让我的感觉比说的更容易。如果我们考虑有限的RAM,但是无限的java类变量,结果会是什么?在一个性能很重要的环境中,会发生什么

我不知道拥有大量的类变量是否算是糟糕的Java实践,因为它们都很重要,而且所有的类都经过了重构

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    性能与对象的字段数无关。内存消耗当然可能会受到影响,但如果需要这些变量,你就无能为力了。 不要太担心性能。让你的代码简单易读,易于维护,经过测试。然后,如果您发现性能问题,请测量并分析它们的来源,并根据需要进行优化

    然而,可维护性和可读性受对象的字段数量的影响。40到50个字段是相当多的字段,这可能表明您的类自己做了太多的事情,并且承担了太多的责任。将它们重构为许多更小的子类,并使用组合可能是一个好主意

  2. # 2 楼答案

    我们一直被教导的一个基本原则是保持高凝聚力(一个班级专注于一项任务)和低耦合性(减少班级之间的相互依赖性,这样一个班级的变化不会影响其他班级)

    在设计一个系统时,我相信重点应该更多地放在可维护的设计上,性能会自行考虑。我不认为一个类可以拥有的变量数量有固定的限制,因为这将严格取决于你的要求

    例如,如果我有一个要求,应用程序向学生推荐一门课程,算法需要50个输入(分数、爱好等),那么这些数据是在一个类中可用还是在多个类中可用都无关紧要,因为整个信息需要加载到RAM中,以便更快地执行

    我会再次说,注意你的设计,在一个类中保留不必要的变量(因为它会将非必需的信息加载到RAM中)或分割成比所需的更多的类(更多的引用和指针移动)都是有害的