у вас код нерабочий и не соответствует styleguide. попробуйте переписать, когда полностью пройдете курсы.
upd: вы не к тому заданию топик открыли, тут задание продвинутого уровня
попробуйте проверку на isRaining сделать общей для температур. т.е. проверку на температуры вложить внутрь проверки на дождь.
какому именно стайлгайду? а ещё лучше дайте ссылку на курс Академии, где есть информация по стайлгайду, которого стоит придерживаться - это будет гораздо полезнее для новичков, чем просто ваша фраза “не соответствует”.
Ок, напишите в чем ошибка? Я сам не вижу ошибки, и код у меня работает. Проверку задания прошел полностью. По поводу isRaining общей для всех температур я понял по примеру кода выше от пользователя Go StaR.
ну первое, данный топик по этой практической задаче: https://htmlacademy.ru/courses/209/challenge/6
вы же написали свой код к задаче из теории: https://htmlacademy.ru/courses/209/run/17
потому собственно и не работает. дальнейшие объяснения наверное попадут уже под оффтоп.
ваш топик здеся
засрали уже просто форум топиками. одних только “Сколько гулять?” уже наплодили 19 тем. Но вы все равно попали именно сюда.
я ничего не требую, пусть пишет как хочет. это уже работодатель будет придирчив, я лишь намекаю, что неплохо бы ознакомиться. потому и предложил переписать позже, когда курсы закончит. и вообще IT это постоянное самостоятельное обучение, рынок не ждет, когда на курсах все разжуют и в рот положат.
я конечно понимаю, что любой плагин навроде beatify исправит это, но не знать что он делает, это моветон =)
я уже освоил модульность,асинхронность,рест апи,почти весь ES6, осваиваю Реакт, но пока еще не иду к работодателю,т.к. надо иметь нормальные навыки,только потом идти и достойно работать.
человек только начинает и искать ему работодателя не разумно будет)
да и не знает он еще что такое плагин или пакет)
var temperature = 20;
var itsRaining = false;
var idealTemperature = 20;
var minutes = idealTemperature;
if (itsRaining || temperature < 0 || temperature > 35) {
minutes = 0;
} else if (temperature > idealTemperature) {
minutes -= temperature - idealTemperature;
} else if (temperature < idealTemperature) {
minutes -= idealTemperature - temperature;
}
Попрошу критики и советов потому, что тяжело мне, как новичку, даются эти задачки…
idealTemperature не нужна. по ТЗ это константа, а не переменная, потому можно отнести к магическим числам, также как вы приводите 0 и 35.
присказка про лишние переменные
вообще как программист, стремитесь не использовать лишних переменных там, где без этого можно обойтись. потому что это лишний расход времени и вычислительных ресурсов:
есть даже присказка про серийного убийцу-программиста Джона:
"Плохой программист Джон сделал ошибку в коде, из-за которой каждый пользователь программы был вынужден потратить в среднем 15 минут времени на поиск обхода возникшей проблемы. Пользователей было 10 миллионов. Всего впустую потрачено 150 миллионов минут = 2.5 миллиона часов. Если человек спит 8 часов в сутки, то на сознательную деятельность у него остается 16 часов. То есть Джон уничтожил 156250 человеко-дней ≈ 427.8 человеко-лет. Средний мужчина живет 64 года, значит Джон убил примерно 6 целых 68 сотых человека.
Как тебе спится, Джон — серийный программист?"
Также и с лишними переменными, микрофризы на каждой операции, превращают код из сотен функций в зависания-ожидания в несколько секунд.
также, алгоритм, который вы избрали не оптимален. проще же вычитать модуль разности чисел, не так ли?
а исходное условие поместить в ограничитель, а не установить правила невыполнения. Т.е. minutes изначально будет 0, а не нулем оно будет вот в таких случаях:
(!itsRaining && temperature >= 0 && temperature <= 35)
Хотели критики - получайте
Конечно ща набегут “защитнички”, которые скажут - работает же код, чо ты… ну тогда про серийного программиста Джона прочитайте еще раз.
Попробую тоже подтвердить, что “краткость - сестра таланта”. Решение в 2 условия и без возврата абсолютного значения числа. Как для новичка, более чем удобочитаемо и логично.
var temperature = 20;
var itsRaining = false;
var minutes = 20;
if (!itsRaining && temperature >= 0 && temperature <= 20) {
minutes = temperature;
} else
if (!itsRaining && temperature > 20 && temperature <= 35) {
minutes = minutes - (temperature - 20);
} else {
minutes = 0;
}
console.log(minutes);
p.s У меня работает. Опытные товарищи, если что, черканите замечание.
var temperature = 20;
var itsRaining = false;
var minutes = 0;
if (!itsRaining && temperature >= 0 && temperature <= 35) {
minutes = 20 - Math.abs(temperature - 20);
}
Да, конечно проще, согласен. Но если учитывать то, что не в одном из 16 заданий курса “Условий”, данный метод не используется и его применение на практике не раскрывается - мы “типо” его не знаем - решение без его использование, как то логичнее и правильнее для юных падаванов.
ну скажем так методы математического объекта это не те знания, которые представляют сложность факультативного изучения =) тут и синус не проходят, но саму функцию то вы знаете
спасибо за совет, я понимаю что чем короче код, тем менее времени нужно чтобы его выполнить, поэтому и просил поправить меня, чтобы изначально стараться учить и писать правильно.
ну этот тред для практики, а вы приводите код из теории. там разные условия задачи.
в вашем коде почему то отсутствуют обычные операторы сравнения и очень много повторяющегося кода. ветка else не нужна, потому что вы и так устанавливаете дефолтное значение var minutes = 0;
должно быть так
var temperature = 20;
var isRaining = true;
var minutes = 0;
if (!isRaining) {
if (temperature >= 10 && temperature < 15) {
minutes = 30;
} else if (temperature >= 15 && temperature < 25) {
minutes = 40;
} else if (temperature >= 25 && temperature <= 35) {
minutes = 20;
}
}
console.log(minutes);