2016-04-26 15 views
0

Ich bin eine PMD Warnung bekommen - UseCollectionIsEmpty und die genaue Nachricht, die er gibt, ist:Wie behebe ich PMD Warnung: UseCollectionIsEmpty?

„Ersatz Anrufe Größe() == 0 (oder Größe() = 0, size()> 0, Größe (!) < 1) mit Aufrufen von isEmpty() "auf der letzten else if Anweisung.

Mein Problem ist, dass meine Aussage prüft, ob meine ArrayList NICHT leer ist. Aber die PMD-Warnung sagt mir, dass ich es in isEmpty() ändern soll, was ich nicht tun muss. Was ist die Arbeit um das zu beheben?

 if (theNeighbors.get(getDirection()) == Terrain.CROSSWALK) { 
      myDirection = getDirection(); 
     } else if (theNeighbors.get(getDirection().left()) == Terrain.CROSSWALK) { 
      myDirection = getDirection().left(); 
     } else if (theNeighbors.get(getDirection().right()) == Terrain.CROSSWALK) { 
      myDirection = getDirection().right(); 
     } else if (myPossDir.size() > 0) { 
      myDirection = myPossDir.get(random.nextInt(myPossDir.size())); 
     } else { 
      myDirection = getDirection().reverse(); 
     } 
+0

Sie es Verlesen. Es geht um die allgemeine Verwendung von 'size()'. Negiere in deinem Fall das 'isEmpty'. – Savior

+0

@PiIlar Wenn durch Negieren 'isEmpty' meinst du' else if (! MyPossDir.isEmpty()) ', bekomme ich eine neue PMD-Warnung darauf" Avoid if (x! = Y) ..; else ..; " wenn ich das tue. – Jasmine

+1

Oh, ja. Ordne sie einfach neu an. Tue das Positive im 'if', mach das Negative im Else. – Savior

Antwort

0

Statt

} else if (myPossDir.size() > 0) { 
     myDirection = myPossDir.get(random.nextInt(myPossDir.size())); 
    } else { 
     myDirection = getDirection().reverse(); 
    } 

Sie verwenden sollten:

} else if (myPossDir.isEmpty()) { 
     myDirection = getDirection().reverse(); 
    } else { 
     myDirection = myPossDir.get(random.nextInt(myPossDir.size())); 
    } 

Dies wird die oben PMD Warnung weggehen, und es mehr eindeutig Ihre Absicht, Sie wollen prüfen, ob Die Sammlung ist nicht leer. Die Verwendung von size() ist für andere Fälle - wenn Sie es nicht mit Null vergleichen.

EDIT: Changed Reihenfolge der ifs, jetzt benutzen Sie isEmpty() statt !isEmpty() (eine andere PMD Warnung und negiert if s sind nicht so gut lesbar wie diejenigen, nicht negiert)

Verwandte Themen