When two methods have the same implementation, either it was a mistake - something else was intended - or the duplication was intentional, but may be confusing to maintainers. In the latter case, one implementation should invoke the other.

Noncompliant Code Example

class Box
  def initialize(length, width, height)
    @length, @width, @height = length, width, height
  end

  def getVolume
    area = @length * @width
    return area * @height
  end

  def getArea                  # Noncompliant, implementation is identical to "getVolume"
    area = @length * @width
    return area * @height
  end
end

Compliant Solution

class Box
  def initialize(length, width, height)
    @length, @width, @height = length, width, height
  end

  def getVolume
    return getArea * @height
  end

  def getArea
    return @length * @width
  end
end

Exceptions

Methods with fewer than 2 statements are ignored.