Java代码PMD抱怨方法应该只有一个出口点

Java代码PMD抱怨方法应该只有一个出口点,java,performance,pmd,Java,Performance,Pmd,嗨 上面是一段java代码,运行良好。 但是,当我针对PMD运行代码时。 一个方法应该只有一个出口点,这应该是该方法中的最后一条语句 你能告诉我如何塑造这个代码吗 它遵循一个方法应该只有一个出口点,这应该是该方法中的最后一条语句 在这类代码中,什么是最好的程序 请分享您在这方面的经验。您确定它没有说您的方法应该只有一个退出点吗 您显示的代码只有一个入口点,但有4个出口点 更新:我们正在讨论退出点 首先,仅仅因为工具告诉你它不喜欢你的工作代码并不意味着它是对的,你是错的。单/多出口点辩论由来已久

上面是一段java代码,运行良好。 但是,当我针对PMD运行代码时。 一个方法应该只有一个出口点,这应该是该方法中的最后一条语句

你能告诉我如何塑造这个代码吗 它遵循一个方法应该只有一个出口点,这应该是该方法中的最后一条语句 在这类代码中,什么是最好的程序


请分享您在这方面的经验。

您确定它没有说您的方法应该只有一个退出点吗

您显示的代码只有一个入口点,但有4个出口点


更新:我们正在讨论退出点

首先,仅仅因为工具告诉你它不喜欢你的工作代码并不意味着它是对的,你是错的。单/多出口点辩论由来已久;在某种程度上,两者都可能是正确的。换句话说,不要修复未损坏的

但如果你真的想安抚PMD,以下是你可以做的:

  • 在方法顶部声明一个布尔变量,即
    isValid
  • 将每个
    return true/false
    语句替换为
    isValid=true/false
  • 在方法末尾,
    return是有效的

您确定它没有说您的方法应该只有一个出口点吗

您显示的代码只有一个入口点,但有4个出口点


更新:我们正在讨论退出点

首先,仅仅因为工具告诉你它不喜欢你的工作代码并不意味着它是对的,你是错的。单/多出口点辩论由来已久;在某种程度上,两者都可能是正确的。换句话说,不要修复未损坏的

但如果你真的想安抚PMD,以下是你可以做的:

  • 在方法顶部声明一个布尔变量,即
    isValid
  • 将每个
    return true/false
    语句替换为
    isValid=true/false
  • 在方法末尾,
    return是有效的

很抱歉打扰了其他人,实际的评论是“一个方法应该只有一个出口点,这应该是该方法中的最后一句话”。现在让我修改这个问题。非常感谢Matt Fenwick的回答,现在我想我所做的是正确的,而不是添加一个额外的布尔变量。如果你对PMD为什么有这个建议感兴趣,请看这个相关的问题:@ryanteney--wow,两天内有200张投票!谢谢你的链接。不要修理没有坏的东西不是,嗯,对。事实上,在更改未损坏的代码之前,您应该进行重构测试。我很抱歉打扰了其他人,实际的评论是“一个方法应该只有一个退出点,这应该是该方法中的最后一句话”。现在让我修改这个问题。非常感谢Matt Fenwick的回答,现在我想我所做的是正确的,而不是添加一个额外的布尔变量。如果你对PMD为什么有这个建议感兴趣,请看这个相关的问题:@ryanteney--wow,两天内有200张投票!谢谢你的链接。不要修理没有坏的东西不是,嗯,对。事实上,在更改未损坏的代码之前,您应该进行重构测试。
public boolean validate(final Beanform[] bagdata) {
        final int length = bagdata.length;
        if (length == 4) {
            return true;
        } else if (length == 1) {
            result = "length==1, Length should be greater than 1";
            return false;
        } else if (length == 3) {
            if (bagdata[0].getCycleType() == null) {
            result = "Cyclic Type is null for length==3";
                return false;
            }
        }

        return true;
    }