首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PMD - Java 8- demeter定律

PMD是一种静态代码分析工具,用于检测Java代码中的潜在问题和不良实践。它可以帮助开发人员发现代码中的bug、性能问题、代码复杂度过高等,从而提高代码质量和可维护性。

Demeter定律,也称为最少知识原则(Law of Demeter),是面向对象编程中的一条设计原则。它要求一个对象应该尽量减少与其他对象之间的交互,只与直接的朋友进行通信。直接的朋友指的是当前对象本身、被当作参数传入方法中的对象、当前对象所创建的对象以及当前对象的组件对象。

Demeter定律的目的是降低对象之间的耦合度,提高代码的可维护性和可扩展性。遵循Demeter定律可以使代码更加清晰、易于理解和修改。

在实际开发中,可以通过以下几种方式来遵循Demeter定律:

  1. 尽量避免链式调用:链式调用会导致对象之间的耦合增加,应该尽量避免过多的链式调用。
  2. 使用封装:将对象的内部细节封装起来,只提供必要的接口给外部使用,避免外部直接访问对象的内部状态。
  3. 使用中间对象:如果需要与其他对象进行交互,可以通过引入中间对象来实现,避免直接与其他对象进行交互。

PMD可以通过检测代码中的违反Demeter定律的情况来帮助开发人员改善代码设计。在使用PMD时,可以使用其提供的规则集中的相关规则来检测代码中的问题,并根据检测结果进行相应的优化和改进。

腾讯云相关产品中,可以使用腾讯云代码审计(CodeAudit)来进行代码静态分析和检测,帮助开发人员发现潜在的问题和不良实践。该产品支持多种编程语言,包括Java,可以帮助开发人员提高代码质量和可维护性。

更多关于腾讯云代码审计的信息和产品介绍,可以参考腾讯云官方文档:腾讯云代码审计

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用代码分析工具PMD检查Android Java代码缺陷

1.背景 使用代码分析工具PMD检查Android Java代码缺陷,本文是个整理。 介绍 PMD是一个静态源代码分析器。它找到常见的编程缺陷,如未使用的变量,空的catch块,不必要的对象创建等等。...它主要关注Java和Apex,但支持其他六种语言。 PMD具有许多内置检查(在PMD术语,规则中),这些检查在规则参考中针对每种语言进行了记录。...我们还支持广泛的API来编写您自己的规则,您可以使用Java或作为自包含的XPath查询来执行。 在集成到构建过程中时,PMD最有用。然后,它可以用作质量门,以强制执行代码库的编码标准。.../src/main/java/ -f text -R rulesets/java/basic.xml 2.4 我的脚本 # 准备环境信息 CUR=`PWD` echo 当前工作目录.../pmd/pmd-ruleset.xml") ruleSets = [] source 'src' include '**/*.java' exclude

1.9K00

Java并发的四大定律

每一个进入 Java 并发世界的人,都会不可避免地面临一系列问题:线程安全、并发控制、锁,以及共享资源。这些概念复杂又抽象,往往让人无从下手。...今天,我们来聊聊 Java 并发的四大定律,帮助你更轻松地掌握并发编程。 1....小结 古斯塔夫森定律告诉我们,通过增大任务规模,可以更好地利用多线程。这与安达尔定律相辅相成,帮你更好地理解并发的真正潜力。 3....总结 并发编程充满挑战,但这些定律为我们指明了方向: 安达尔定律提醒我们,并行化受串行代码的限制; 古斯塔夫森定律则给了我们希望,增大问题规模能提升并行化收益; 李特尔定律帮助我们理解任务队列的行为;...理解这些定律,将帮助你在并发编程中游刃有余。希望这些定律能成为你在多线程世界中的指南针,帮助你写出更高效的并发程序。

7310
  • Java核心知识点整理大全8-笔记

    可重入锁(递归锁) 本文里面讲的是广义上的可重入锁,而不是单指 JAVA 下的 ReentrantLock。...Java 中 读 写 锁 有 个 接 口 java.util.concurrent.locks.ReadWriteLock , 也 有 具 体 的 实 现 ReentrantReadWriteLock。...共享锁和独占锁 java 并发包提供的加锁模式分为独占锁和共享锁。 独占锁 独占锁模式下,每次只能有一个线程能持有锁,ReentrantLock 就是以独占方式实现的互斥锁。...2. java 的并发包中提供了 ReadWriteLock,读-写锁。它允许一个资源可以被多个读操作访问, 或者被一个 写操作访问,但两者不能同时进行。 4.1.9.12....当调用 start 启动线程时 Java 虚拟机会调用该类的 run 方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法。

    10610

    现在该用 Java 12,还是坚持 Java 11?

    ,而 Java 12 也正在赶来的路上,现在 Java 8 仍然是开发者的主流选择,而 Java 11 是 Java 8 之后的首个 LTS 版本,所以有不少开发者表示会选择升级至 Java 11。...按照 Java 的发布计划,Java 12 将于明年 3 月推出,那么问题来了,我们是应该采用 Java 12,还是坚持使用 Java 11 呢?...先看一下新旧发布模式之间的差异: Oracle 的官方观点认为:与 Java 7->8->9 相比,Java 9->10->11的升级和 8->8u20->8u40 更相似。...此外还包括 Checkstyle,JaCoCo,PMD,SpotBugs 等等其他工具。 依赖关系:你的依赖关系是否都准备好用于每个新版本?请记住,它不仅仅是直接依赖项,而是技术堆栈中的所有内容。...compile, jar, source, javadoc, etc) Checkstyle, 以及相关的 IDE 插件和 maven 插件 JaCoCo, 以及相关的 IDE 插件和 maven 插件 PMD

    80320

    Objective-C 中的点符号一定是恶魔吗?

    在 Objective-C 中加入点符号,让人联想到苹果公司的某个人说: Java is such a popular language....Our square brackets freak out Java programmers....Java 是一种如此流行的语言。我们的方括号吓坏了 Java 程序员。让我们用点符号来取代方括号吧;这样看起来就像 Java 了,这样就能提高 Objective-C 的采用率。...3、点符号助长了违反 "得墨忒耳定律(Law of Demeter) "的行为 你经常看到这样的代码吗?你多长时间写一次? foo.bar.baz.qux = 10; 这有什么问题吗?...问题是,无法阅读是有原因的:它违反了 "德墨忒尔定律"。 如果你对 "德墨忒尔定律 "还不熟悉,它是指让物体之间过于熟悉,从而污染了物体之间的清晰界限。这里有一个快速记忆的方法:你可以挑你的朋友。

    10310

    java高并发系列-第3天:有关并行的两个重要定律

    java高并发系列第3篇文章,一个月,咱们一起啃下java高并发,欢迎留言打卡,一起坚持一个月,拿下java高并发。 有关为什么要使用并行程序的问题前面已经进行了简单的探讨。...目前,主要有两个定律对这个问题进行解答,一个是Amdahl定律,另外一个是Gustafson定律。 Amdahl(阿姆达尔)定律 Amdahl定律是计算机科学中非常重要的定律。...阿姆达尔定律图示 为了更好地理解阿姆达尔定律,我会尝试演示这个定定律是如何诞生的。 首先,一个程序可以被分割为两部分,一部分为不可并行部分B,一部分为可并行部分1 – B。如下图: ?...Gustafson定律 Gustafson定律也试图说明处理器个数、串行化比例和加速比之间的关系,如图1.12所示,但是Gustafson定律和Amdahl定律的角度不同。...java高并发系列目录: 1.java高并发系列-第1天:必须知道的几个概念 2.java高并发系列-第2天:并发级别 希望您能把这篇文章分享给更多的朋友,让它帮助更多的人。

    77420

    p3c 插件,是怎么检查出你那屎山的代码?

    PMD 是一款采用 BSD 协议发布的Java 程序静态代码检查工具,当使用PMD规则分析Java源码时,PMD首先利用JavaCC和EBNF文法产生了一个语法分析器,用来分析普通文本形式的Java代码...该软件功能强大,扫描效率高,是 Java 程序员 debug 的好帮手。 那么 p3c-pmd 是什么呢?...", node.getImage())); p3c-pmd 插件是基于 PMD 实现的,更具体的来说是基于 pmd-java 的,因为 PMD 不仅支持 Java 代码分析,还支持其他多种语言...测试工程 guide-pmd └── src ├── main │ ├── java │ │ └── cn.itedus.guide.pmd.rule │...同时你还可以测试 category/java/codestyle.xml 这个是 PMD 自身提供好的规约监测。

    91640

    JavaEE就业学习路线(给初学者以及自学者一个学习方向)

    第一节java入门 1-Java 背景介绍 2-Java 入门程序的编写 3-环境配置 4-基本概念介绍 5-类型转换 6-开发工具使用 第二节java基础 1-运算符的使用 2-键盘录入的练习 3-Java...语法-判断 4-Java语法-循环一 5-Java语法-循环二 6-随机数获取和使用 7-数组简介 8-数组的使用 9-方法的定义和使用 10-方法的练习 11-断点调试 12-基础语法练习一 13-基础语法练习二...私服的配置 9-发布jar包到私服 10-SVN和Maven 第四章物流实战 一位优秀的Java工程师必定是项目经验非常丰富的,如果你具备丰富的项目实战,那么你将是众多公司青睐的对象。...4-运输配送管理 5-出库入库 6-导出报表-excel 7-导出报表-PDF 8-前端报表 9-系统部署-系统环境和数据库 10-系统部署-服务器 第五章流行框架 一位能够立于不败之地的Java工程师...通过此阶段的学习,让大家能够使用主流框架组合SSM开发,成为公司中非常需要的Java工程师。

    2.5K70

    利用Jenkins pipeline配置测试工具

    配置测试工具 2.1 PMD PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。...该软件功能强大,扫描效率高,是Java程序员debug的好帮手。 与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说在不运行Java程序的情况下,报告错误。...PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题。 此外,用户还可以自己定义规则。检查Java代码是否符合某些特定的编码规范。...此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。例如,你可以编写一个规则,要求PMD找出所有创建Thread和Socket对象的操作。 2.1.1建立Project。...2.6.2 配置PMD插件 选择菜单“质量配置->创建”,按图26设置,语言选择JAVA。 ?

    3.3K10
    领券