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

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

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

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

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

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

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


Если вы так и не получили ответ, пожалуйста, проверьте папку
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 для нахождения и ис…
Интервью с Джейсоном Тернером, одним из ведущих подкаста "CppCast": история и причины закрытия проекта

Дата: 27 Сен 2022

Автор: Ульяна Гришина

В этой статье мы поговорим с Джейсоном Тернером, одним из основателей CppCast. CppCast – это первый С++ подкаст, основанный С++ разработчиками. Начиная с 2015 года каждую неделю на CppCast выходили п…
Боремся с 16-летним легаси-кодом, или исправляем C и C++ front-end в PVS-Studio

Дата: 22 Сен 2022

Автор: Сергей Ларин

В 2022 году статическому анализатору PVS-Studio для языков C и C++ исполняется 16 лет. Если бы анализатор был человеком, то он бы уже заканчивал школу. Это очень старый проект, и система типов в нем …

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

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