Skip to content

24 часа Ле-Мана - #1

Open
devices11 wants to merge 1 commit into
mainfrom
dev
Open

devices11 wants to merge 1 commit into
mainfrom
dev

Conversation

@devices11

Copy link
Copy Markdown
Owner
  1. На вход из консоли получаем название и скорость машин (валидируем ввод)
  2. При сохранении машины проверяется лидер и обновляется при необходимости
  3. После ввода трех машин выводится лидер гонки
    P.s. ИИ использовался только для рефакторинга.

1. На вход из консоли получаем название и скорость машин(валидируем ввод)
2. При сохранении машины проверяется лидер и обновляется при необходимости
3. После ввода трех машин выводится лидер гонки
P.s. ИИ использовал только для рефакторинга
Comment on lines +4 to +5
private final String name;
private final int speed;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Т.к. поля final, то можно убрать геттеры и модификатор private и получать доступ к чтению полей напрямую

public class RaceState {
private String leaderName = "";
private int leaderDistance = 0;
private final int raceDuration = 24;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно вынести в константу, добавив static модификатор - private static final int RACE_DURATION = 24;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

просто не стал сильно заморачиваться )

import java.util.ArrayList;

public class RaceRepository {
private final ArrayList<Car> cars = new ArrayList<>();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

От хранения массива машин и лишнего цикла при определении победителя можно избавиться, если при вводе данных сразу вычислять победителя и хранить его в отдельной переменной, тогда программа будет требовать меньше памяти и работать быстрее

public String readCarName(int number) {
System.out.println("Введите название машины №" + number + ":");

while (true) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не рекомендую писать бесконечные циклы через while (true) - лучше всегда явно прописывать условие выхода из цикла, чтобы уменьшить вероятность ошибиться и повысить читабельность кода

while (true) {
try {
String name = scanner.nextLine().trim();
if (!name.isEmpty())

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Код для считывания непустой строки с ввода лучше вынести в отдельную функцию - код, разделённый на небольшие функции, легче читать, поддерживать и переиспользовать

continue;
}
int speed = Integer.parseInt(input);
if (speed > 0 && speed <= 250) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Минимальную и максимальную скорости лучше вынести в константы для повышения читабельности кода

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

просто не стал сильно заморачиваться )

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants