Skip to content

Проектная работа №1, Комаров#2

Open
deiteriy wants to merge 2 commits intobasefrom
master
Open

Проектная работа №1, Комаров#2
deiteriy wants to merge 2 commits intobasefrom
master

Conversation

@deiteriy
Copy link
Copy Markdown
Owner

@deiteriy deiteriy commented Oct 5, 2022

Это первая попытка сдачи ДЗ. Первый отправленный на ревью пулреквест вышел неудачным, поэтому исправился здесь

}
} else {
System.out.println("Вы ввели некорректное значение. Введите числовое значение больше 1");
scanner.nextLine();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Мы во всех условиях вызываем метод scanner.nextLine();, почему бы не вынести его наружу всех условий?

product.productName = scanner.nextLine();
System.out.println("Введите стоимость товара в формате \"рубли,копейки\"");

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.

Лучше не пренебрегать фигурными скобками - их отсутствие может сильно затруднить читаемость кода.

} else {
System.out.println("Вы ввели некорректное значение. Введите числовое значение");
scanner.nextLine();
}
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, отвечающий за обработку ввода товаров, в отдельный метод - это позволяет делать код более читабельным и аккуратным. То же касается других логических блоков - обработка ввода количества людей, конечный вывод.
Вообще на тему того, как лучше организовать написание кода, могу посоветовать книгу Роберта Мартина "Чистый код" .

String ending = new String();

public void add(Product product) {
total = total + product.productPrice;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Можно total += product.productPrice;


public void add(Product product) {
total = total + product.productPrice;
shoppingList = shoppingList + product.productName + " " + product.productPrice + "\n";
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Можно shoppingList += product.productName + " " + product.productPrice + "\n";

class Product {
String productName;
double productPrice;
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Лучше классы выносить в отдельные файлы. 1 файл - 1 класс.

@deiteriy
Copy link
Copy Markdown
Owner Author

deiteriy commented Oct 6, 2022

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

Но у меня остались несколько вопросов:

  • Я попробовал вынести классы в отдельные файлы, но все немедленно перестало работать. Как связывать классы, которые находятся вне файла Main, с ним? Как программа понимает, что за созданием класса нужно обратиться туда?

  • Некорректный ввод обрабатывается двумя разными методами, через next.Double и next.Int. Зачем выводить в отдельный метод, если оба встречаются в коде лишь один раз?

  • Вопрос по scanner.nextLine, щедро рассыпанному по коду. Дело в том, что после обработки ввода любым другим методом, в следующем вводе оказывается пустая строка. Я пробовал вынести scanner.nextLine за пределы всех условий, где указано, однако это приводило либо к бесконечному циклу в случае комбинации некорректного ввода (например, некорректный Int и затем String там где должен быть Int), либо, в лучшем случае, к двукратному курсированию по циклу до повторного ввода. Наставник объяснил, что в этом особенность сканера, которую в общем-то можно понять экспериментально. Если все же есть способ сократить число сканеров в коде, я буду рад узнать о них.

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