to the top
close form
Для получения триального ключа
заполните форму ниже
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
>
Как фидбек помог улучшить наш C++ квиз

Как фидбек помог улучшить наш C++ квиз

31 Авг 2022

Ранее в нашем блоге мы рассказывали о квизе для C++ разработчиков. С момента запуска мы тщательно собирали обратную связь. Часть из неё касалась ошибок в работе квиза, которые мы естественно решили исправить.

0985_fix_the_quiz_ru/image1.png

Для тех, кто пока не знает о каком квизе идёт речь, расскажем кратко: мы отобрали несколько ошибок, найденных нашим анализатором в Open Source проектах. Участнику предоставляются 10 случайных фрагментов кода, в которых нужно найти и отметить ошибку. На каждый фрагмент выделено 60 секунд.

Вы можете почитать о квизе подробнее в заметке или пройти его.

Вернёмся к теме. Мы получили много комментариев от тех, кто прошёл наш квиз. И часть из них была о проблемах при прохождении. Являясь апологетами качества кода, мы стремимся к тому, чтобы улучшать и наши собственные проекты.

Мы обработали комментарии с нескольких площадок, где разместили информацию о квизе, включая Habr, соцсети, тематические форумы и сайты. По итогу выделили 2 момента, требующие исправления. С первым столкнулись многие, прошедшие квиз – мы собрали немало комментариев по поводу способа выделения и подсчёта ошибок. Вторая же ошибка не была так распространена, о ней был лишь один комментарий. Ирония в том, что мы сознательно её допустили. Но обо всё по порядку.

Ошибка 1. А как попасть в правильный ответ?

Изначально механика квиза предоставляла возможность множественного выбора ответа (т. е. нескольких элементов). В примере ниже ошибкой является clip->GetSequence.

0985_fix_the_quiz_ru/image2.png

Ранее вы могли выбрать как правильный ответ, так и дополнительно (специально или случайно) отметить знаки = или (), и даже всю строку. По сути, вы нашли ошибку, но ответ засчитывался как неверный из-за лишних символов.

Теперь можно выделить не более одного элемента. Но это не значит, что выбранный элемент может быть единственным правильным. В качестве верного ответа часто нами размечено несколько мест в коде, поэтому выбор любого из них будет корректным.

Наглядно увидеть, как и что изменилось вы можете на видео:

Было

Стало

Недавно мы подводили итоги двухмесячной работы квиза и рассказали о том, как почти 2 000 разработчиков в сумме заработали 3,5 балла из 10. Не исключаем, что способ подсчёта отчасти мог повлиять на итоговый результат.

Ошибка 2. Наш мини-фейл

Писать о своих багах всегда неловко, но делать это нужно. Вернёмся немного назад, в период разработки квиза. Изначально при прохождении был баг: как только задание появлялось на экране, ему ставился статус "время закончилось". Почему это происходило:

  • при загрузке задания таймер обнулялся и запускался заново;
  • далее таймер запускался от 60 до 0 и каждый тик проходил проверку: если таймер === 0, то ставим флаг "время закончилось", но т. к. в начале таймер обнулялся, то проверка на ноль проходила сразу.

Если объяснить просто, то:

открывается задание -> таймер обнуляется -> сразу проходит проверка на === 0 и выдаётся "время истекло".

А должно было работать так:

открывается задание -> таймер обнуляется -> таймер запускает отсчёт -> через 60 секунд проходит проверка на === 0 и выдаётся "время истекло".

Чтобы не тратить время мы решили поставить таймер от 60 до 1. После этого таймер спокойно обнулялся, а флаг "время закончилось" ставился при проверке "если таймер === 1".

Решение не изящное, но быстрое. Мы были уверены, что никто не станет косплеить героев боевиков 90-х и нажимать "Отвечаю" на последней секунде. Но, если разработчику кажется, что всё будет работать именно так, как он задумал, – найдётся тот, кто "споткнётся о костыль")

2 месяца мы со спокойной душой не думали об этой ошибке. Пока в одном из комментариев нам не прилетел скриншот:

0985_fix_the_quiz_ru/image3.png

Получается, что, пообещав 60 секунд на ответ, мы на самом деле давали участникам 59 секунд. Что ж, ошибку признали, поправили и теперь каждый участник может со спокойной душой нажимать кнопку ответа на последней секунде. Но лучше, конечно, не затягивать, если ответ вы нашли быстрее.

Этот опыт в очередной раз доказал, как важна обратная связь и работа с ней.

Кстати, все эти моменты мы учли при разработке квиза по C#, который уже доступен к прохождению. Проходите его сами, скидывайте друзьям, которые пишут на C#, и, конечно же, делитесь своими результатами. А если вдруг попадётся баг, то обязательно пишите нам – будем чинить.

И не забывайте, что каждому прошедшему квиз доступен промокод на 30-дневную лицензию PVS-Studio.

Популярные статьи по теме
Статический анализатор кода vs разработчики. Шо, опять?

Дата: 11 Июл 2022

Автор: Алексей Саркисов

В середине мая этого года мы опубликовали обновлённую версию нашего квиза для C++ разработчиков. Спустя 2 месяца мы решили рассказать о результатах.
Ответы на задачи со стенда PVS-Studio на конференциях 2018-2019

Дата: 18 Ноя 2019

Автор: Сергей Хренов

Привет! Несмотря на то, что сезон конференций 2019 года ещё в самом разгаре, мы бы хотели обсудить задачи, которые ранее предлагали посетителям нашего стенда. Осень 2019 года мы начали с новым наборо…
Как программисты с PVS-Studio ошибки в проектах искали

Дата: 04 Дек 2017

Автор: Филипп Хандельянц

Недавно сайт Pinguem.ru совместно с командой PVS-Studio устраивали конкурс, в котором программистам было необходимо в течение месяца использовать статический анализатор PVS-Studio для нахождения и ис…
Под капотом SAST: как инструменты анализа кода ищут дефекты безопасности

Дата: 26 Янв 2023

Автор: Сергей Васильев

Сегодня речь о том, как SAST-решения ищут дефекты безопасности. Расскажу, как разные подходы к поиску потенциальных уязвимостей дополняют друг друга, зачем нужен каждый из них и как теория ложится на…
Ложные представления программистов о неопределённом поведении

Дата: 17 Янв 2023

Автор: Гость

Неопределённое поведение (UB) – непростая концепция в языках программирования и компиляторах. Я слышал много заблуждений в том, что гарантирует компилятор при наличии UB. Это печально, но неудивитель…

Комментарии (0)

Следующие комментарии next comments
close comment form
Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо