Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Comments

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

Open
deiteriy wants to merge 2 commits intobase from
master
Open

Проектная работа No1, Комаров #2
deiteriy wants to merge 2 commits intobase from
master

Conversation

@deiteriy
Copy link
Owner

@deiteriy deiteriy commented Oct 5, 2022
edited
Loading

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

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

@faritowich faritowich Oct 5, 2022

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

@faritowich faritowich Oct 5, 2022

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

@faritowich faritowich Oct 5, 2022

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

@faritowich faritowich Oct 5, 2022

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

@faritowich faritowich Oct 5, 2022

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

@faritowich faritowich Oct 5, 2022

Choose a reason for hiding this comment

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

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

Copy link
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

Reviewers

1 more reviewer

@faritowich faritowich faritowich left review comments

Reviewers whose approvals may not affect merge requirements

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /