Минимальный, самодостаточный и воспроизводимый пример — залог хорошего ответа

Если разработчику необходимо найти решение конкретной прикладной проблемы по программированию, он, с большой вероятностью, воспользуется Stack Overflow. «Конкретный прикладной вопрос» подразумевает, что автор решает реальную проблему. Реальная проблема может появиться только в реальном коде! Что может быть проще: 

  1. Разместил проблемный код на сайте.
  2. Profit! Решение!

В реальности у разработчиков не всегда получается описать свою проблему детально.

11

Чтобы получить действительно качественный ответ, в вопросе необходимо привести пример кода, с помощью которого другие участники смогут воспроизвести вашу проблему. Такой фрагмент должен быть:

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

Опишем эти рекомендации подробнее.

Минимальный

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

Минимально != сжато — не жертвуйте информативностью ради краткости. В фрагменте кода обязательно соблюдайте отступы и другое форматирование, следите за логикой именования переменных.

Самодостаточный

Многие участники попробуют использовать приведенный вами фрагмент кода для того, чтобы воспроизвести проблему самостоятельно. Убедитесь, что вы указали все необходимое, чтобы ваши коллеги смогли вам помочь.

Воспроизводимый

Чтобы знатоки могли помочь вам с проблемой, проверьте, что она действительно существует. Убедившись, что проблема имеет место, опишите ее. «Код не работает» — не является описанием проблемы. Поясните, в чем именно вы видите проблему, приведите точное сообщение об ошибке (слово в слово), шаги для воспроизведения и что вы хотите получить в результате.

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

Помните, хороший вопрос — залог хорошего ответа!