当前位置: 首页 > 知识库问答 >
问题:

PMD 5.4.2中可能存在上帝类违规

毛镜
2023-03-14

使用PMD 5.4.2forJAVA代码,可以看到一些与可能的上帝类相关的违规行为,如下所示:

Possible God class (WMC=69, ATFD=65, TCC=0.03218390804597701)

我不想压制这些警告。那么,谁能解释一下,解决这一违规行为的最佳解决方案是什么。

谢谢你的解释。

共有2个答案

皇甫敏达
2023-03-14

将类分成几个较小的类(较少的方法,较少使用其他类)。阅读代码也会更容易。

艾心远
2023-03-14

从…起http://pmd.sourceforge.net/pmd-5.0.1/rules/java/design.html

上帝类规则使用度量检测上帝类设计缺陷。上帝课程做的事情太多,太大,太复杂。它们应该分开,以便更面向对象。该规则使用“实践中的面向对象度量”中描述的检测策略。违反规定的行为是针对全班的。另见参考文献:米歇尔·兰扎和拉杜·马里内斯库。实践中的面向对象度量:使用软件度量来描述、评估和改进面向对象系统的设计

还有更多关于如何重构上帝类的内容,请参阅《如何重构上帝类》?

 类似资料:
  • 我们在Java项目中使用源代码分析器PMD。我正在努力解决报告中的问题,目前正在努力解决规则。我知道这个想法不是为了创建大型类。 然而,我不喜欢“巨大”这个词,因为它太模糊了。有人能解释一下这条规则是如何运作的吗?报告说。 可能的上帝类(WMC=47,ATFD=11,TCC=0.06315789473684211) 这些数字意味着什么?有人知道决定某个特定类是否庞大的公式吗? 这个规则的Javad

  • 我正在启用持久性的Kubernetes集群中运行Ignite。每台机器都有一个24GB的Java堆,20GB专用于持久内存,内存限制为110GB。我的相关JVM选项是。在每个节点上运行DataStreamer数小时后,我的集群上的节点达到了它们的k8s内存限制,触发了OOM杀机。运行Java NMT后,我惊讶地发现分配给内部内存的空间数量巨大。 Kubernetes metrics证实了这一点:

  • 我试图将Ignite用作键值对的内存数据库,其值范围从50MB到800MB不等。看起来Ignite通过JVM分配堆空间,它从不清理,即使缓存条目离开堆,被清除,没有连接的客户机和运行的操作。我的机器将无法处理这样的内存消耗,因此我正在寻找一种方法来清理一些内存。 我的测试场景如下: null 我正在使用pyignite瘦客户机,通过python脚本在本地测试Ignite: 该脚本将800 MB的数

  • 我正在编写一个spring boot 2应用程序,我正在使用SQL批量复制功能在SQL Server2012数据库中插入几条记录。每插入700行,我就有600 MB的泄漏 我已经试用了Microsoft驱动程序版本6.4.0.jre8和7.2.2.jre8,但任何东西都改变了。我尝试为tomcat更改Hikari连接池,但结果是一样的。 为了调用Microsoft API,我使用了包装器框架(ht

  • 在Python中,有没有一种简单的方法可以删除一个字典的属性,当这个属性可能一开始就不存在的时候? 如果使用语句,则结果为KeyError: 使用if语句有点冗长,必须键入和两次: 正在查找与类似的内容,如果该属性不存在,则默认为值:

  • 我正在尝试调用restapi,但收到错误消息 org.thymeleaf.exceptions.TemplateInputException:错误解析模板[视图字段],模板可能不存在,或者可能无法由org.thymeleaf.engine.TemplateManager.resolve模板(TemplateManager.java:869)~[thymeleaf-3.0.12。RELEASE. j