Я часто использую отладчик, потому что я работаю в большой системе, и поэтому я отстой.
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
Независимо от того, насколько короток и часто читается ваш код, всегда будет вероятность того, что в нем будут ошибки. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
Человек ошибается, и никогда нельзя доказать, что программа правильная, так почему бы не использовать такие инструменты, как отладчик / автоматизированное тестирование, чтобы помочь себе в этом сложном бизнесе?
Если код достаточно короткий, тогда подойдут простые тесты. Кроме того, если оно короткое и вы знаете природу ошибки, чтения кода может быть достаточно. Однако, когда база кода велика, включает в себя несколько языков, смешанных вместе, плюс 3 уровня, тогда вы просто должны иметь хорошее тестовое покрытие на многих уровнях плюс очень хороший отладчик - иначе вы будете тратить много времени.
Итак, когда мне не нужен отладчик?
Я не самый умный программист и не самый опытный, но все же иногда мне не нужно использовать отладчик. Вот когда:
- Код мой или хорошо написанный И
- Он написан на читаемом языке И
- Общий проект небольшой.
Когда я сильно полагаюсь на отладчик?
- Краткий ответ: часто .
- Когда приложение вылетает. Особенно когда это развернуто. Установив VS2010 на этот компьютер, вы можете изменить разницу между «Неизвестной ошибкой» и
FileNotFoundException
.
- Когда происходит сбой или плохая работа сторонней библиотеки.
- Когда код плохо написан. В частности, если за один и тот же файл за последние 10 лет работали 10 разных людей, 7 из которых больше не работают в компании.
- Когда проект большой
- Когда код достаточно монолитный.
- Когда задействовано несколько уровней (GUI, SQL, BL).
Обратите внимание, что «отладчик» может относиться к более чем одному инструменту. Я использую отладчик Visual Studio, отладчик SQL (в основном для хранимых процедур), а также профилировщик SQL (чтобы выяснить, какой SP вызывается). Буду ли я нуждаться в инструментах такого калибра, которые я написал для быстрого Python-скрипта sysadmin-ish? Нет. Если бы я сделал свой собственный маленький инструмент на основе графического интерфейса? Зависит. Если это .Net WinForms - вероятно, нет. Если это WPF - да.
Что в любом случае определяет «настоящий» программист? Тот, который быстро? осведомленный? Хорошо в алгоритмах? Пишет хорошую документацию? Только когда точно кто-то выпускается в этом новом названии? Когда человек пересекает магическую линию?
Я бы сказал, что программист, который не испортил свои руки в существующей стаже более 100 человеко-лет, не имел шанса быть униженным сложностью и собственными ограничениями (а также разочарованным качеством кода).
Лично я стараюсь использовать лучший из доступных мне отладчиков, и я часто использую его. Если задача достаточно проста и не требует отладчика - тогда я ее не использую. Это не займет много времени, чтобы понять, нужен ли он мне или нет.
...
Теперь, теоретически, я мог читать кодовую базу так долго, что я бы просто получил ее. Однако практический подход работает лучше всего, плюс я часто хочу переписать тот глупый код, который я вижу. К сожалению, мне потребовалось бы 10 с лишним лет, чтобы очистить кодовую базу, в которой я нахожусь. Поэтому использование отладчика является очевидным первым шагом. Только когда я узнаю, какая из 5 миллионов строк кода работает, я отсканирую файл вверх и вниз, чтобы попытаться выяснить, что делает этот класс.