stikriz писал(а):Вообще, все понятно, и я согласен. Просто, очень странно читать текст, наподобие, как же нам всем отладчик мешает писать хороший код Мне, например, отладчик не мешает. А логи я использую, в основном, чтобы не мучить конечного пользователя на предмет, мол, что же там какое сообщение было на экране? Проще сказать, мол, дружок, пришли мне файлик.
Программисту имеющему правильную систему написания кода отладчик не мешает, т.к. он его применяет только для нужных вещей. Но, среднестатистический, малообученный или излишнесамоуверенный программист использует отладчик, как якобы инструмент ускоряющий написание кода. Вместо того, чтобы обдумать функционал и структуру, такой программер, едва только возникло первое видение будущего кода, в спешке начинает долбить клавиши и рождает быдло-код, который естественно не работает. Но беда такого горе-программер, что он в спешке так и не разобрался, а что вообще его творение (код) должно делать. И этот программер начинает в отладчике пошагово шариться в своем свеженаписанном коде в поиске ошибок. Выполнив два или три прохода, такой горе-программер, получает какой-то результат, совпадающий с ожиданием. Программер в радости уже считает код законченным, т.е. не содержащим ни одной ошибки, т.к. он себя считает гениальным, да и ведь отладка же уже завершена. Естественно реальность не такая радостная, прога вся в багах, и путем отладки было получено единственный безошибочный способ применения кода, шаг влево или вправо - и будут вылазить новые ошибки. Но програмер уже считает работу завершенной и горе-продукт идет к заказчику.
Моя практика говорит, что примерно 80% программеров, с которыми я пересекался, были именно такими горе-программерами, для которых отладчик - это бич. Так как таких челов, только отсутствие интерактивных инструментов заставляет вначале думать, а уже потом кодить. Такие лучше всего программили во времена перфокарт, их лень заставляла думать, т.к. перенабивать перфокарты было очень нужно и трудоемко.
Добавлено спустя 12 минут 27 секунд:vada писал(а):Без отладчика можно обходиться. Для этого есть юнит-тесты. 90% косяков можно выгрести на них, а 10% логами (контрольная печать).
Юнит-тесты хорошо работают только тогда, когда изначально понятно как все должно работать, имеется четкая и однозначная структура проекта и т.п. Пишешь модуль (класс или функцию), делаешь к нему тесты, проверяешь, и затем эти тесты включаешь в систему автоматического тестирования.
Но в реальности, задач с изначально четкой постановкой очень мало. Тут либо заказчик не может сформулировать четкую задачу (а таких заказчиков более 90%, т.к. заказчик ставит задачу не в терминах разработчиков), либо разработчик не знает как решать задачу и идет поиск решений из нескольких вариантов.
В такой ситуации, писать юнит-тесты практически бесполезно, т.к. они охватывают только самый примитивный функционал. То есть во время разработки, программер еще не понимает бизнес-логики, т.е. еще не знает, какой должен быть результат, а когда он поймет, то проект уже завершен, и писать юнит-тест уже вроде бы как поздно (работа сдана, деньги уплочены, и нужно заниматься новым проектом).
Поэтому в реальной ситуации, в которой мне приходится работать, статистика примерно следующая:
- 70% ошибок выявляется путем обдумывания функционала и просмотра кода (особенно секций интерфейса);
- 20-25% - выявляют логи;
- оставшиеся 5-10% - это на отладчик, который и выступает в роли ручного юнит-теста бизнес-логики, когда через отладчик приходится понимать, как работает бизнес-логика. То есть отладчик используется не для исправления ошибок, а для обучения задаче.
Юнит-тесты завязаны на базовый функционал библиотек, написаны давно и практически ничего не дают, т.к. библиотека уже отлажены.