Skip to content

Instantly share code, notes, and snippets.

@zhukovsd
Forked from Asenim/IlPl123454 - hangman.md
Last active January 31, 2024 17:28
Show Gist options
  • Save zhukovsd/9ddf43d475c48313492a6a51a6552417 to your computer and use it in GitHub Desktop.
Save zhukovsd/9ddf43d475c48313492a6a51a6552417 to your computer and use it in GitHub Desktop.

https://github.com/IlPl123454/hangman/tree/master

Ревью от https://t.me/MaddeningShadow

  1. Именование булевых методов "startNewGameCheck()". Принято в начале этих методов ставить "is" или "has", к примеру isGameStarted(). Плюсы такого подхода в читаемости и понятности кода, другие разработчики сразу понимают, что метод возвращает и что собой представляет. Такой же стандарт используется и во фреймворках, как Спринг.

  2. Поля класса Main, в процедурном стиле, нужно явно прописывать для глобальной поддержки во всем приложении. То есть, поставить всем полям public. А переменным, которые не предполагают изменения final, что тоже является хорошей практикой.

  3. Стоит соблюдать общий стиль для всего кода. Сейчас один метод имеет через каждую строку пробел, а другой через две и более. Относящееся одно к другому я бы писал вместе, след. шаг через пробел, чтобы разделить логику.

  4. При именовании переменных не стоит добавлять ей "магических чисел". Имя "usedLetters2" не дает ясного понимания о том, чем она отличается от "usedLetters" (если такая переменная так же присутствует). Если их несколько таких, то различия должны быть ясны и обоснованы или же можно рассмотреть использования массива или коллекции для них.

  5. В случаях, когда нужно проверить одну и ту же переменную для множества сценариев, можно использовать switch-выражения. Сделает код более читаемым и структурированным, вместо множества if. https://github.com/IlPl123454/hangman/blob/2ea05b08fb84230f23178bccdf16a002ff1fdcf3/src/Main.java#L127

  6. Так же стоит придерживаться принципа Single Responsibility - каждая процедура/метод выполняет одну конкретную задачу и не берет на себя доп. обязанности. Например, если есть функция чтения файла, то она не должна заниматься обработкой данных файла или его выводом в консоль. Это помогает улучшить читаемость, поддерживаемость кода, облегчает отладку и обеспечивает повторное использование кода.

  7. Бесконечные циклы while(true) считается плохим тоном в коде, лучше заменить в этом случае на выход из программы. https://github.com/IlPl123454/hangman/blob/2ea05b08fb84230f23178bccdf16a002ff1fdcf3/src/Main.java#L217

В конце хочу сказать, что это отличный результат, проект написан и работает. А все выше это только советы для улучшения кода! Будем ждать теперь в ООП стиле)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment