Это кросс-пост, потому что в первый раз он был скорее сторонним ответом на другой вопрос . На этот вопрос это прямой ответ.
Отладка ухудшает код качества
код, который мы производим, потому что он позволяет
нам уйти с более низким уровнем
подготовка и менее умственный
дисциплина. Я узнал это от
случайно контролируемый эксперимент в
начало 2000 года, о котором я сейчас рассказываю:
Я взял контракт как Delphi
кодер, и первая назначенная задача была
написать шаблонный движок
концептуально похож на отчетность
Движок - используя Java, язык с
который я был незнаком.
Странно, работодатель был довольно
счастлив платить мне контрактные ставки
потратить месяцы, становясь опытным с
новый язык, но не будет платить за
книги или отладчики. Мне сказали
скачать компилятор и научиться использовать
онлайн-ресурсы (Java Trails были
довольно хорошо).
Золотое правило искусства и науки
в том, что тот, у кого есть золото, делает
правила, поэтому я действовал в соответствии с инструкциями. я
получил мои редакторы макросов, так что я
может запустить компилятор Java на
текущий буфер редактирования с одним
нажатием клавиши я нашел синтаксис-раскраску
определения для моего редактора, и я использовал
регулярные выражения для анализа выходных данных компилятора
и наведи курсор на сообщение
расположение ошибок компиляции. Когда
пыль осела, у меня была маленькая IDE с
все, кроме отладчика.
Для отслеживания моего кода я использовал старый добрый
вылепленная техника вставки
пишет в консоль, которая вошла
положение в коде и состояние
любые переменные, которые я хотел проверить. Это
был сырым, это было много времени, это
нужно было вытащить когда-то код
работал и иногда это сбивало с толку
побочные эффекты (например, принуждение
инициализация раньше, чем могла бы
в противном случае произошло
код, который работает только во время трассировки
присутствует).
В этих условиях мой класс
методы стали короче и все больше и больше
четко определены, пока, как правило, они
сделал точно один очень хорошо определенный
операция. Они также имели тенденцию быть
специально разработанный для простого
тестирование, с простым и полностью
детерминированный вывод, чтобы я мог проверить
их независимо.
Короче говоря, это то, что
когда отладка более болезненна, чем
проектирование, путь наименьшего
сопротивление лучше дизайна.
Что превратило это из наблюдения
чтобы наверняка был успех
проект. Внезапно появился бюджет и
У меня была "правильная" IDE с
встроенный отладчик. По ходу
из следующих двух недель я заметил
возвращение к прежним привычкам, с
«эскизный» код, созданный для работы
итеративное уточнение в отладчике.
Заметив это, я воссоздал несколько
более ранняя работа с использованием отладчика на месте
продуманного дизайна. Что интересно,
отнятие отладчика замедлилось
развитие незначительно, а
готовый код был значительно лучше
качество особенно от
перспектива обслуживания.
Не поймите меня неправильно: есть место
для отладчиков. Лично я считаю
это место в руках команды
лидер, чтобы быть выведенным во времена
страшно нужно разгадать тайну, и
затем снова забрали перед людьми
потерять свою дисциплину.
Люди не захотят просить об этом
потому что это будет признание
слабость перед своими сверстниками, и
акт объяснения необходимости и
окружающий контекст вполне может побудить
взгляды сверстников, которые решают проблему -
или даже лучшие проекты, свободные от
проблема.
Итак, ЗА, я не только согласен с вашей позицией, у меня есть реальные данные из контролируемого эксперимента, подтверждающие это. Это, однако, довольно маленький образец. Требуются более сложные тесты, прежде чем мои выводы будут подтверждены.
Почему бы вам не взять то, что я сказал, вашей команде и предложить испытания. У вас больше данных, чем у них (я только что их вам предоставил), и для того, чтобы иметь надежную основу для несогласия с вами, им в основном нужно проверить идею, и единственный способ сделать это - это проверить вашу идею.
Вы должны быть готовы к тому, что все развалится, потому что все это основано на предположении, что разработчики обладают талантом и опытом, чтобы принять вызов более сильного дизайна в отсутствие пошаговой отладки.
Поэтапная отладка была создана для упрощения отладки. Прямой эффект от снижения планки состоит в том, что могут участвовать люди с меньшим количеством талантов - если вы создадите инструмент, который могут использовать даже ослы, вы получите ослов, использующих его - многие из них, если недавно доступное занятие хорошо оплачивается.
Это приводит к оттоку людей с талантом, потому что они обычно используют этот талант, чтобы делать редкие и драгоценные вещи, чтобы получать хорошую зарплату, не работая слишком усердно, и рынок не хочет платить за превосходство, потому что он не может отличить талант достаточно хорошо, чтобы знать, когда это оправдано.
Другая мысль: более поздняя работа с проблемами на производственных серверах, где было невозможно установить отладчик, показала важность наличия кодовой базы, для которой обслуживание не зависит от доступности отладчика. Код, который растет в отсутствие отладчиков, намного меньше хлопот. Выберите, чтобы не использовать их, когда вы можете изменить свое мнение, и тогда, когда вы не можете изменить свое мнение, это не будет так ужасно.