string15
@string15
Учусь верстать руками

Переписать говнокод?

Пока что учусь, но уже мне кажется похоже на это!)

const SPENDING_THRESHOLD = 200;
const TAX_RATE = 0.08;
const PHONE_PRICE = 99.99;
const ACCESSORY_PRICE = 9.99;

var bank_balance = prompt('Сколько денег у вас не счету?', '');
var amount = 0;
var countTel = 0;
var countAccessuary = 0;

	while (true) {
	    if (amount < bank_balance) {
                var isTrue = confirm('Купить телефон?');

                if (isTrue) {
                    countTel++;
                    amount += countTel * PHONE_PRICE;

          // можем ли мы позволить себе аксессуар?
                    if (amount < SPENDING_THRESHOLD) {
                        var isAccesuary = confirm('Купить акссесуар?')

                        if (isAccesuary) {
                            amount +=  ACCESSORY_PRICE;
                        }
                    } else {
                        alert('У вас больше нет денег на акссесуары!')
                    }
                }

			} else {
			    break;
			}


		}

		function calculateTaxAndFormate(num) {
			var amountAfter = num + (num * TAX_RATE);

			console.log( 'Общая сумма вкл налог: $' + amountAfter.toFixed(2) );
                }

        calculateTaxAndFormate(amount);

	if (amount > bank_balance) {
            console.log( 'Вы не можете себе позволить эту покупку! :(' )
	}
  • Вопрос задан
  • 303 просмотра
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Этот бред убери:
while (true)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Зачем его переписывать? Просто делайте следующую задачу. Для начинающего норм. Исходник почти нормально читается и работает без ошибок. Я запустил и за минуту купил полтора десятка телефонов и два аксессуара (не знаю, правда, что за телефоны... пусть будет сюрприз).
Ответ написан
Комментировать
devellopah
@devellopah
не судите строго, гуру джаваскрипта - https://repl.it/JkPV/3

const you = { device: 0, accessory: 0, availableMoney:  null };

handle(99.99, 9.99, 0.08, you);

function handle(phone, accessory, tax, customer) {
	
	const availableMoney = parseInt(prompt('Сколько денег у вас не счету?', ''), 10);
	
	if(Number.isNaN(availableMoney) || availableMoney <= 0) return alert('Остаток на счету не является положительной суммой!');

	customer.availableMoney = availableMoney;
	
	if(!confirm('Купить телефон?')) return purchaseNothing(); // ты не хочешь покупать девайс о_0

	const phonePrice = getRealPrice(phone, tax); // стоимость девайса с учётом налогов
	
	if(availableMoney < phonePrice) return phoneBuyingFailed(availableMoney, phonePrice); // девайс не купить :(
	
	if(!confirm('Купить акссесуар?')) return purchasePhone(phonePrice, customer); // ты хочешь девайс, но без акссесуара :|

	const comboPrice = phonePrice + getRealPrice(accessory, tax); // стоимость трубы и акссесуара вместе (комбо) с учётом налогов
	
	if(availableMoney > comboPrice) return purchaseCombo(comboPrice, customer); // денег хватило на всё!

	comboBuyingFailed(availableMoney, comboPrice); // акссесуар точно мимо...
		
	return (confirm('Вы всё ещё хотите приобрести только гаджет?')) // когда пролетел с акссесуаром
		?  purchasePhone(phonePrice, customer) 
		: purchaseNothing;
}

function purchaseNothing() {
	return alert('Очень жаль видеть вас уходящим...');
}


function purchasePhone(price, customer) {
	alert('Вы приобрели девайс за ' + price + '$. Поздравляем с покупкой!'); // бабла хватило на всё!
	
	console.log('Your results:');
	
	return { device: 1, accessory: 1, availableMoney: +fixNumb(customer.availableMoney - price) };
}

function purchaseCombo(price, customer) {
	alert('Вы приобрели девайс вместе с акссесуаром за ' + price + '$. Поздравляем с покупкой!'); // бабла хватило на всё!
	
	console.log('Your results:');
	
	return { device: 1, accessory: 1, availableMoney: +fixNumb(customer.availableMoney - price) };
}

function phoneBuyingFailed(total, price) {
	alert(
		'К сожалению, у вас недостаточно средств на счету(' + total + '$).\n' + 
		'Стоимость гаджета с учётом налогов - ' + price + '$'
	);
}

function comboBuyingFailed(total, price) {
		alert(
		'К сожалению, у вас недостаточно средств на счету(' + total + '$).\n' + 
		'Стоимость гаджета вместе c акссесуаром с учётом налогов - ' + price + '$'
	);
}

function fixNumb(n) {
	return n.toFixed(2);
}

function getRealPrice(n, tax) {
	return +fixNumb((n + (n * tax)));
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы