@OlyaSoz

Как можно улучшить этот код?

class Pizza {
    constructor(crust, toppings, howMany) {
        this.crust = prompt('Choose your crust: ');
        this.howMany = +prompt('How many toppings do you want?');
        this.array = [];
    }

    makeTopping() {
        for(let i = 1; i <= this.howMany; i++) {
            this.toppings = prompt('Choose your topping: ');
            this.array.push(this.toppings);
        }
    }

    makePizza() {
        console.log(`Your order is done! You choose ${this.crust} crust with these toppings: ${this.array.join(', ')}`);
    }
}

let personalPizza = new Pizza;
personalPizza.makeTopping();
console.log(personalPizza.makePizza());
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 5
@Urukhayy
class Pizza {
    constructor() {
        this.crust = prompt('Choose your crust: ');
        this.array = new Array(+prompt('How many toppings do you want?')).fill(0);
    }

    makeTopping() {
        this.array = this.array.map(function (t) { return prompt('Choose your topping: ') })
    }

    makePizza() {
        return `Your order is done! You choose ${this.crust} crust with these toppings: ${this.array.join(', ')}`
    }
}

let personalPizza = new Pizza();
personalPizza.makeTopping();
alert(personalPizza.makePizza());
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
class Pizza {
    constructor() {
        this.crust = prompt('Choose your crust: ');
        this.toppingsCount = +prompt('How many toppings do you want?') || 0;
        this.toppings = [];
    }

    makeToppings() {
        const {toppings, toppingsCount} = this;
        for(let i = toppingsCount; i--;) {
            toppings.push(prompt('Choose your topping: '));
        }
    }

    makePizza() {
        const {crust, toppings} = this;
        return `Your order is done! You choose ${crust} crust with these toppings: ${toppings.length ? toppings.join(', ') : 'nothing'}`;
    }
}

let personalPizza = new Pizza();
personalPizza.makeTopping();
console.log(personalPizza.makePizza());
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
не использовать prompt (если это реальный проект для реальных людей)
не использовать '+' для конвертации (если нет цели выпендриться знанием корявостей JS)
убрать взаимодействие с пользователем в конструкторе и сделать отдельный метод. (если это реальный проект для реальных людей)
заменить this.toppings на const toppings
дать array осмысленное имя.
Убрать класс вообще (опционально, если этот код именно в таком виде и используется)
console.log в последней строке бессмысленнен. Либо возвращайте значение из функции, либо вызывайте ее просто так.

Остальное - вкусовщина.
Ответ написан
alex_keysi
@alex_keysi
Помог с решением? Отметь “правильный ответ”
Нет. Он идеален))
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
параметры не используются, забыла убрать из конструктора)


а зря. Первоначальный путь был верным.

Пицца не может сама спросить покупателя, как ей приготовиться =))
Кто-то другой получит данные от пользователя, передаст их объекту Pizza

const crust = prompt('Choose your crust: ');
const howMany = +prompt('How many toppings do you want?');
const personalPizza = new Pizza(crust, howMany);


Это, пожалуй, главная ошибка в коде - архитектурная. Все остальное, о чем писали - стилистические мелочи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы