Я часто використовую налагоджувач, тому що я працюю у великій системі, і тому я смоктаю.
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? Ні. Якщо я створив власний маленький інструмент на основі GUI? Залежить. Якщо це .Net WinForms - мабуть, ні. Якщо це WPF - так.
Що все-таки визначає "справжнього" програміста? Той, що швидко? обізнаний? Чи добре в алгоритмах? Пише гарну документацію? Тільки коли саме хтось закінчує цей новий титул? Коли перетинає магічну лінію?
Я б сказав, що програміст, який не забруднив руки під час 100-річних зусиль у чоловікові роки, не мав шансу бути приниженими складністю та власними обмеженнями (а також засмученим якістю коду).
Я особисто намагаюся використовувати найкращий доступний налагоджувач, який мені доступний, і я, як правило, використовую його часто. Якщо завдання досить просте і не вимагає налагодження - я його тоді не використовую. Це не займе багато часу, щоб зрозуміти, потрібен я такий чи ні.
...
Тепер, теоретично, я міг прочитати базу коду так довго, що я просто її отримав. Однак практичний підхід працює найкраще, плюс я часто хочу переписати той дурний код, який я бачу. На жаль, знадобиться 10+ років, щоб очистити базу коду, в якій я перебуваю. Отже, використання налагоджувача - очевидний перший крок. Тільки коли я дізнаюся, який з 5 мільйонів рядків коду діє, я просканую файл вгору та вниз, щоб спробувати зрозуміти, що робить цей клас.