https://github.com/IlPl123454/hangman/tree/master
Ревью от https://t.me/MaddeningShadow
-
Именование булевых методов "startNewGameCheck()". Принято в начале этих методов ставить "is" или "has", к примеру isGameStarted(). Плюсы такого подхода в читаемости и понятности кода, другие разработчики сразу понимают, что метод возвращает и что собой представляет. Такой же стандарт используется и во фреймворках, как Спринг.
-
Поля класса Main, в процедурном стиле, нужно явно прописывать для глобальной поддержки во всем приложении. То есть, поставить всем полям public. А переменным, которые не предполагают изменения final, что тоже является хорошей практикой.
-
Стоит соблюдать общий стиль для всего кода. Сейчас один метод имеет через каждую строку пробел, а другой через две и более. Относящееся одно к другому я бы писал вместе, след. шаг через пробел, чтобы разделить логику.
-
При именовании переменных не стоит добавлять ей "магических чисел". Имя "usedLetters2" не дает ясного понимания о том, чем она отличается от "usedLetters" (если такая переменная так же присутствует). Если их несколько таких, то различия должны быть ясны и обоснованы или же можно рассмотреть использования массива или коллекции для них.
-
В случаях, когда нужно проверить одну и ту же переменную для множества сценариев, можно использовать switch-выражения. Сделает код более читаемым и структурированным, вместо множества if. https://github.com/IlPl123454/hangman/blob/2ea05b08fb84230f23178bccdf16a002ff1fdcf3/src/Main.java#L127
-
Так же стоит придерживаться принципа Single Responsibility - каждая процедура/метод выполняет одну конкретную задачу и не берет на себя доп. обязанности. Например, если есть функция чтения файла, то она не должна заниматься обработкой данных файла или его выводом в консоль. Это помогает улучшить читаемость, поддерживаемость кода, облегчает отладку и обеспечивает повторное использование кода.
-
Бесконечные циклы while(true) считается плохим тоном в коде, лучше заменить в этом случае на выход из программы. https://github.com/IlPl123454/hangman/blob/2ea05b08fb84230f23178bccdf16a002ff1fdcf3/src/Main.java#L217
В конце хочу сказать, что это отличный результат, проект написан и работает. А все выше это только советы для улучшения кода! Будем ждать теперь в ООП стиле)