Magic Numbers: Es ist besser, Ihre Definitionen für 0,1,2,3 in ein enum
oder final
Feld zu verschieben, um sie mit einem aussagekräftigen Namen zu referenzieren. Zum Beispiel final int LETTER_NOT_IN_WORD = 0
oderenum HangmanGuess { LETTER_NOT_IN_WORD }
Redundanz: Die Kernlogik zwischen findEmptyLetters
und inEmptyLetters
ist die gleiche, die Sie char
in einem suchen char[]
. Sie könnten so umgestalten:
/* Check if letter is in enteredLetters array */
public static boolean inEnteredLetters(char letter, char[] enteredLetters) {
return indexOf(letter, enteredLetters) >= 0;
}
/* Find first empty position in array of entered letters (one with code \u0000) */
public static int findEmptyPosition(char[] enteredLetters) {
return indexOf('\u0000', enteredLetters)
}
/* Determine the index in {@code vals} where {@code ch} exists. Returns -1 if {@code ch} is not in {@code vals}. */
public static int indexOf(char ch, char[] vals) {
return Arrays.asList(vals).indexOf(Character.valueOf(ch));
}
Es ist auch darauf hinzuweisen, dass in der aktuellen Implementierung zurückgegeben findEmptyPosition
wird, n
wo n
sich die enteredLetters.length + 1
leeren Positionen befinden. Ich bin mir nicht sicher, ob dies die gewünschte Funktionalität ist.