2012-03-30 3 views
0

Können Sie mir sagen, ob Sie eine Schwäche in diesem Code sehen?Sehen Sie eine Schwäche in dieser Java-Funktion?

private String SplitCategory(String categoryName){ 

    String[] categories = categoryName.split("\\-"); 
    String categorySet = "Set Category: "; 

    if(categories.length <= 1) 
     categorySet += categories[0].trim(); 
    else 
     categorySet += categories[categories.length - 1].trim(); 

    return categorySet; 
} 

Die params für diese Funktion wie folgt aussieht: „CategoryOne“, „CategoryOne - Unterkategorie A“

+6

Kennen Sie http://codereview.stackexchange.com/? – Mat

+1

Besser gefragt [hier] (http://codereview.stackexchange.com/), IMHO. –

Antwort

1
  • Funktionen Namen beginnen in der Regel in Kleinbuchstaben: splitCategory
  • Die Funktion aufgeteilt nicht wirklich die Kategorien (ich würde erwarten, dass es ein String [] zurück, wenn es getan hat). So könnte man es vielleicht noch etwas anderes nennen, wie getLowestLevelCategory
  • Überprüfen Sie, dass der Parameter nicht null ist, wie bereits von anderen gesagt
  • Was meinen Sie wirklich nicht if(categories.length <= 1) ist aber if(categories.length == 1)
2

Erstens ist es zu einer Nullpointer verwundbar, weil man nie prüfen, ob die param categoriesName vor nicht null ist es Aufspaltung .

Zweitens der Block:

if(categories.length <= 1) 
    categorySet += categories[0].trim(); 

ist zu einem ArrayIndexOutOfBoundsException verwundbar.

Auch dies wäre wahrscheinlich besser auf codereview.stackexchange.com

+0

wird es eine ArrayIndexOutOfBoundsException, kein Nullzeiger, glaube ich. –

+1

@ EuclidesMulémbwè 'categoryName.split' kann eine' NullPointerException' auslösen. In diesem Fall sollte der Autor dieser Methode prüfen, ob das Argument "null" ist. Wenn dies der Fall ist, werfen Sie eine "IllegalArgumentException". – mre

1

wenn yourcategories.length Null ist ein Laufzeitfehler haben hier (CategorySet + = Kategorien [0] .trim();) da Es gibt keinen Index 0 in einem Null-Längen-Array.

1

sollten Sie

setzen
private String splitCategory(String categoryName){ 
String[] categories = categoryName.split("\\-"); 
String categorySet = "Set Category: "; 

if(categories.length == 1) 
    categorySet += categories[0].trim(); 
else if (categories.length == 2) 
    categorySet += categories[categories.length - 1].trim(); 

return categorySet; 

}

in Ihrem vorherigen Code Nullpointer auftreten können.

Verwandte Themen