Что помогает вам улучшить вашу способность находить ошибку? - PullRequest
6 голосов
/ 22 февраля 2009

Я хочу знать, есть ли способ быстрого поиска ошибок в программе.

Кажется, что чем больше вы овладеваете архитектурой своего программного обеспечения, тем быстрее вы можете найти ошибки.

Как программисты улучшают свою способность находить ошибки?

Ответы [ 20 ]

8 голосов
/ 22 февраля 2009

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

6 голосов
/ 22 февраля 2009

Разделяй и властвуй. Всякий раз, когда вы отлаживаете, вы должны думать о сокращении возможных мест возникновения проблемы. Каждый раз, когда вы запускаете приложение, вы должны пытаться устранить возможный источник и сосредоточиться на фактическом местоположении. Это можно сделать с помощью логирования, отладчика, утверждений и т. Д.

5 голосов
/ 22 февраля 2009

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

  1. В чем именно ошибка, по сути.
  2. Почему это произошло.
  3. Могли бы вы найти это раньше, проще.
  4. Все остальное, что вы узнали из ошибки.

Я считаю, что если подумать над этими минутами, вероятность того, что в будущем вы обнаружите такую ​​же ошибку, значительно снизится.

3 голосов
/ 22 февраля 2009

Опыт делает вас лучшим отладчиком. Обратите пристальное внимание на ошибки, которые вы и другие обычно делаете. Попытайтесь выяснить, применимы ли эти ошибки ко ВСЕМУ коду, который касается вас, а не к единственному случаю, когда ошибка была замечена.

Рэймонд Чен известен своими способностями экстрасенса отладки .

Большая часть того, что выглядит как экстрасенс отладка действительно просто зная, что люди склонны ошибаться.

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

3 голосов
/ 22 февраля 2009

Я предполагаю, что вы имеете в виду логические ошибки. Лучший способ, который я нашел для выявления логических ошибок, - реализовать какую-то схему тестирования. Проверьте jUnit в качестве стандарта. В значительной степени вы определяете набор принятых результатов ваших методов. Каждый раз, когда вы компилируете свою систему, она проверяет все ваши тесты. Если вы ввели новую логику, которая нарушает ваши тесты, вы сразу узнаете об этом и точно знаете, что вам нужно исправить.

Тестируемый дизайн - это довольно большое движение в программировании. Вам будет сложно найти язык, который не поддерживает какое-либо тестирование. Даже JavaScript имеет множество наборов тестов.

2 голосов
/ 22 февраля 2009

Ошибка проверки и отчетности. Ошибка отладки новичка # 1 заключается в том, чтобы отключить создание отчетов об ошибках, избегать проверки того, имеет ли смысл происходящее, и т. Д. И т. Д. В общем, люди чувствуют, что если они не видят, что что-то идет не так, то ничего не происходит. Что, конечно, не может быть дальше от дела.

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

2 голосов
/ 22 февраля 2009

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

Я был в проекте в течение нескольких лет, который поддерживал продавец. Они были не очень хорошими отладчиками, и большую часть времени нам приходилось указывать им на область кода, в которой возникла проблема. Что усугубило нашу проблему, так это то, что у нас не было хорошего способа просмотра исходного кода, поэтому многие из наших «отладок» просто ощущались.

2 голосов
/ 22 февраля 2009

Знай свои инструменты.

Убедитесь, что вы знаете, как использовать условные контрольные точки и часы в вашем отладчике.

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

2 голосов
/ 23 февраля 2009

Сон и отдых.

2 голосов
/ 22 февраля 2009

Кажется, что чем больше вы овладеваете архитектура вашего программного обеспечения, быстрее вы можете найти ошибки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...