我的Fraction程序运行流畅,但是NetBeans IDE告诉我以下if是多余的:

public boolean equals(Object other)
{
  Fraction bool = (Fraction) other;

  if(this.numerator == bool.numerator && this.denominator == bool.denominator)
  {
   return true;
  }
  else return false;
}


上面的代码可以完美地编译/运行并通过所有测试用例,但是NetBeans的冗余标志确实让我感到困扰。我在代码中添加了reduceToLowestTerms(),该标志消失了,但是我的构造函数中已经有reduceToLowestTerms()。这是非冗余代码(根据NetBeans)的样子:

public boolean equals(Object other)
{
        Fraction bool = (Fraction) other;

        if(this.numerator == bool.numerator && this.denominator == bool.denominator)
        {
         bool.reduceToLowestTerms();
         this.reduceToLowestTerms();
         return true;
        }
         else return false;
    }


任何建议将不胜感激

最佳答案

这看起来类似于我的IDE在此语句上发出的警告:


  “ if”语句可以简化

if(foo())
{
   return true;
}
else
{
   return false;
}

  
  可以简化为

return foo();



它只是过于复杂和冗长的代码。您的简化为:

return this.numerator == bool.numerator && this.denominator == bool.denominator;


但是,您已经注意到,您的代码已经正确了。不必进行此更改,但是它将使代码更加简洁和简化。

将调用添加到另一个方法(reduceToLowestTerms())会删除此“标志”的原因是,不再可以通过这种方式将代码简化为单个return语句。

关于java - 如果消息冗余,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28821081/

10-09 08:35