-
Notifications
You must be signed in to change notification settings - Fork 0
Comments
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мы во всех условиях вызываем метод scanner.nextLine();, почему бы не вынести его наружу всех условий?
src/main/java/Main.java
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Лучше не пренебрегать фигурными скобками - их отсутствие может сильно затруднить читаемость кода.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Можно вынести некоторые логические блоки, например, весь цикл while, отвечающий за обработку ввода товаров, в отдельный метод - это позволяет делать код более читабельным и аккуратным. То же касается других логических блоков - обработка ввода количества людей, конечный вывод.
Вообще на тему того, как лучше организовать написание кода, могу посоветовать книгу Роберта Мартина "Чистый код" .
src/main/java/Main.java
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Можно total += product.productPrice;
src/main/java/Main.java
Outdated
There was a problem hiding this comment.
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";
src/main/java/Main.java
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Лучше классы выносить в отдельные файлы. 1 файл - 1 класс.
deiteriy
commented
Oct 6, 2022
Во втором коммите я добавил логику обработки некорректного ввода отрицательной стоимости товара, и внес в код косметические изменения, на которые указали в ревью. В отдельный метод обработку некорректного ввода пока не выносил - хочу сдать скорее и бежать к третьему спринту, отставание в неделю нагонять.
Но у меня остались несколько вопросов:
-
Я попробовал вынести классы в отдельные файлы, но все немедленно перестало работать. Как связывать классы, которые находятся вне файла Main, с ним? Как программа понимает, что за созданием класса нужно обратиться туда?
-
Некорректный ввод обрабатывается двумя разными методами, через next.Double и next.Int. Зачем выводить в отдельный метод, если оба встречаются в коде лишь один раз?
-
Вопрос по scanner.nextLine, щедро рассыпанному по коду. Дело в том, что после обработки ввода любым другим методом, в следующем вводе оказывается пустая строка. Я пробовал вынести scanner.nextLine за пределы всех условий, где указано, однако это приводило либо к бесконечному циклу в случае комбинации некорректного ввода (например, некорректный Int и затем String там где должен быть Int), либо, в лучшем случае, к двукратному курсированию по циклу до повторного ввода. Наставник объяснил, что в этом особенность сканера, которую в общем-то можно понять экспериментально. Если все же есть способ сократить число сканеров в коде, я буду рад узнать о них.
Uh oh!
There was an error while loading. Please reload this page.
Это первая попытка сдачи ДЗ. Первый отправленный на ревью пулреквест вышел неудачным, поэтому исправился здесь