Последнее задание "Дом, который построил Кекс" похоже недоработано

Есть подозрение что последнее задание не может быть пройдено.

В условии задания ничего не сказано про формат проверки и формат предоставления конечной информации. Код я написал, он выполняется и выполняется верно. Однако верификация выстроена на том, что подменяет значения свойств объекта, что и нужно, чтобы программа считала конечную стоимость исходя из разных значений свойств объекта - т.е. в одном случае площадь 500 метров и материал камень (с соответствующей ценой материала), в другом - 200 метров и другой материал. Вполне логично, что считающий скрипт должен быть написан в форме функции, которая меняла бы значения свойств. Скажем, функция CalculateHousePrice с методами (rooms, floors, material, coefficient) и верификатор вызывал бы эту функцию с рандомными аргументами -
CalculateHousePrice(10, 2, ‘stone’, 14.3)
CalculateHousePrice(5, 4, ‘wood’, 15)
и так далее.

Но в условии задания об этом не сказано! Там вообще не сказано ничего о том, как оформлять готовое задание. Снова повторюсь, что рабочий код я написал, но все значения там уже подставлены. Чтобы динамически менять значения, и таким образом скрипт проходил бы проверку, нужно чтобы мы знали имя функции, которую вызывает верификатор.

Если ничего не сказано о том, какое имя функции должно быть, то невозможно динамически менять значения свойств, соответственно, нельзя получать разные результаты.

Таким образом я не понимаю как сдать задание - похоже условие задания просто не дописано.

Вот мой код:
var materialPrice = {
‘wood’: 1000,
‘stone’: 1500,
‘brick’: 2000
};

var house = {
rooms: 10,
floors: 5,
material: ‘wood’,
coefficient: 10.5,
calculateSquare: function(param1, param2, param3) {
return (this.rooms * this.coefficient) * this.floors;
},
calculatePrice: function() {
return this.calculateSquare() * materialPrice.stone;
}
};
house.calculatePrice();

1 лайк

Спасибо, передал разработчикам.

Здравствуйте.
Смотрите, в задании сказано, что нужно создать метод calculatePrice, именно он, а не функция вызываются в финальном испытании.
Проверка задания написана более сложным способом, поэтому меняются значения в объектах, а не аргументы некой функции, об этом сказано в теории задания.

В вашем случае ошибка в том, что вы используете фиксированное значение materialPrice.stone в методе вычисления цены. В свойстве material объекта house у вас указан текущий материал для строительства дома, но значения этого свойства может поменяться на stone или brick, поэтому вам надо связать то, что находится в свойстве house.material с данными из объекта materialPrice.

Спасибо вам за подробную обратную связь, мы попробуем сделать задание более прозрачным и понятным!)

2 лайка

Теперь задание понял, спасибо. Желательно конечно прописать в задании то, как выводить результаты, потому как это не очевидно. Больше того, ранее другие комментаторы (курс функции или объекты, не помню точно) уже писали что непонятно, какой формат вывода результата требуется. Там я формат вывода понял, но для других это все же было неочевидно.

Полагаю что задания надо писать не ориентируясь на самых сообразительных, а ориентируясь на самых тугих.

Особенно учитывая что при изучении нового материала мозги очень быстро перегружаются новой информацией и часто понятные вещи в других обстоятельствах начинают представлять дилемму.

UPD: Да, что касается методов - их сотни (встроенных) и даже тысячи (кастомных). Хотел бы попросить вас сделать отельную главу в рамках изучения JS, посвященную обзору методов и тому, что они там делают. На самом деле, надо было о методах рассказывать постепенно, например в главе массивы, о методах работы с ними не сказано ни слова. Это меня несколько шокировало, я даже просто не стал его проходить, бросил на середине, бо понял что курс пока очень и очень сырой… Ну сделайте хотя бы отдельный раздел по методам.

1 лайк

Да, мы постараемся сделать формулировки понятней раз они вызывают сложности. Когда делаешь курс, глаз замыливается, поэтому очень важна обратная связь от пользователей)

Порядок курсов такой, какой есть, непросто так. Сложно рассказать и понять, что такое методы, когда студент ещё не знает объектов. Массивы очень хороший курс, там интересное испытание и важная базовая информация, знания которой очень нужны при решении многих задач. Например, там вы узнаете, как написать сортировку пузырьком, понимание таких алгоритмов первостепенней, чем использование встроенных в язык методов. Согласитесь, найти список методов на MDN проще, чем самостоятельно реализовать сортировку? =)
Дайте курсу ещё один шанс и попробуйте пройти снова)

Просто курс по методам вряд ли будет, но методы будут часто встречаться в дальнейших курсах и информации о них будет всё больше. Так что просто проходите курсы дальше, делайте задания и испытания, и узнаете много полезного и интересного. И пишите обратную связь, это важно, и я ещё раз говорю вам за это спасибо)

Не со всем согласен что вы написали. В основном, да, но есть нюансы. Изучающий ДОЛЖЕН знать что есть, скажем, метод сортировки цикла, пускай даже после того, как пройдет задание по самостоятельному написанию этой самой сортировки. Иначе это г-код.

Ну вот сами посудите, читаете вы чужой код, в одном сортировка цикла с помощью метода, в другом самописная. Что посчитаете г-кодом? Вот именно.

Откуда студенту еще узнать о том, что вообще есть встроенные методы, как они работают и пишутся, если не из курса?

P.S. есть некоторые рекомендации по юзабилити курса, бо он все же (с мой точки зрения, точки зрения потребителя) несколько недоработан, посему заходит с большим трудом. Вполне можно было бы его чуть доработать, тогда positive feedback вырос бы в разы… Куда и где я могу написать свои мысли по этому поводу?

Очень много информации, которую ученик должен знать. В первую очередь важно понимать, как решать ту или иную задачу, уметь самостоятельно построить логику и написать алгоритм. Плохой код — это не тот, в котором самописная сортировка, плохой код — это код, который сложно прочитать, понять и поддерживать. Код, который игнорирует общепринятые в языке и программировании нормы. Использование встроенного метода никак не влияет на это.

Курсы — первая ступень в понимании языка и программирования вообще. Курсы не расскажут вам всё, потому что это в принципе невозможно. И сейчас мы делаем курсы для новичков, делая упор на понимание основ языка.

А обратную связь про юзабилити можете тоже написать здесь или создать новую тему, мы всё прочитаем и ответим

Я говорю о том, что о методах НЕОБХОДИМО упоминать, рассказав, что есть такие-то и такие-то встроенные методы, о том, что они выполняют, и вполне можно написать (как это часто и делают), что, мол, подробно о том как работают встроенные методы мы разберем далее в курсе…

А вы уходите от частного (мое указание о том что в курсе практически ничего не говорится о методах, хотя они являются одним из столпов написания кода) к общему - “мы в курсе не можем рассказать абсолютно обо всем…” что я даже не хочу комментировать, бо это уводит беседу из конструктивной плоскости в сугубо демагогию. Вполне можно просто принять к сведению то что я написал и рассмотреть включение в доработанный курс встроенных методов. Тогда наших с вами долгих препирательств не было бы.

А что касается “правильного” и “неправильного” кода, то в 10 раз с точки зрения рынка, с точки зрения заказчика более важны не легкость понимания кода, а то время и ресурсы что тратятся на его исполнение. Неоптимизированный код на проценты, в разы, десятки и сотни раз увеличивает время исполнения кода и затрачиваемые ресурсы, что ведет к огромнейшим потерям в бизнесе - на какой сервис вы будете ходить, тот, что выполняет ваш запрос менее чем за секунду и тот, где нужно на обработку каждого запроса по несколько секунд? Ответ очевиден. И оптимизировать код можно только с помощью методов.

А “понятный” код нужен единственно самому разработчику - бизнесу, или, если угодно, рынку совершенно неинтересно, каким гемором обернется для того или иного разработчика тот или иной код. Если уж сами разрабы часто ленятся писать комментарии к коду даже для своих коллег-разработчиков, то что уж говорить о боссах, которые оплачивают всю их работу.

Мы с вами говорим немного о разных вещах — я об обучении новичков, а вы о промышленном коде.

Жду ваших замечаний про юзабилити курса)