Я бы, конечно, настоятельно не рекомендовал проверять закомментированный код. Однако я бы не стал категорически запрещать это. Иногда (если редко) уместно проверять закомментированный код в системе контроля версий. Сказать «никогда так не делай» - слишком ограничительно.
Я думаю, что все мы согласны с этим:
- Никогда не проверяйте мертвый код в системе управления версиями
- Никогда не проверяйте сломанный (нефункционирующий) код в системе контроля версий, по крайней мере, никогда в транк и очень редко в частную ветку, YMMV
- Если вы временно что-то закомментировали или что-то сломали в целях отладки, не проверяйте код, пока вы не восстановите код до его правильной формы.
Некоторые из них говорят, что есть другие категории, такие как временно удаленный код или инкрементное, но неполное улучшение, которое включает небольшой объем закомментированного кода в качестве документации о том, что будет дальше, или очень короткое (в идеале 1 строка) фрагмент прокомментированного код показывает то, что никогда не должно следует добавлять повторно. Закомментированный код ВСЕГДА должен сопровождаться комментарием, в котором говорится, почему он закомментирован (а не просто удален), и указывается ожидаемое время жизни закомментированного кода. Например, «Следующий код приносит больше вреда, чем пользы, поэтому закомментирован, но его необходимо заменить перед выпуском XXX».
Комментарий, подобный приведенному выше, уместен, если вы доставляете исправление, чтобы остановить кровотечение у клиента, и у вас нет немедленной возможности найти окончательное исправление. После доставки исправления закомментированный код является напоминанием о том, что у вас все еще есть что-то, что нужно исправить.
Когда я могу вернуть закомментированный код? Одним из примеров является то, что я предварительно удаляю что-то, что, по моему мнению, с высокой вероятностью придется повторно добавить в ближайшем будущем в той или иной форме. Закомментированный код служит прямым напоминанием о том, что он неполный. Конечно, старая версия находится в системе управления версиями, и вы можете просто использовать комментарий FIXME как признак того, что нужно что-то еще. Однако иногда (если не часто) код - лучший комментарий.
Кроме того, когда ошибка исправляется путем удаления одной строки (или, реже, двух строк) кода, я иногда просто закомментировал строку комментарием, чтобы никогда не включать этот код повторно с указанием причины. Комментарии такого рода ясные, прямые и краткие.
Рекс М сказал: 1) Проверяйте только полную функциональность, 2) [Если] задача слишком велика - разбейте ее на более мелкие выполняемые задачи.
В ответ: Да, это идеальный вариант. Иногда ни один из вариантов невозможен, когда вы работаете над производственным кодом и имеете немедленную критическую проблему, которую нужно исправить. Иногда, чтобы выполнить задачу, вам нужно на некоторое время поместить версию кода в поле. Это особенно верно для изменений кода сбора данных, когда вы пытаетесь найти первопричину проблемы.
Для конкретного экземпляра, о котором спрашивают в более общем вопросе ... пока разработчик проверяет закомментированный код в частной ветке, которую никто не увидит, кроме этого разработчика (и, возможно, кого-то, с кем разработчик сотрудничает), от этого мало вреда. Но этот разработчик (почти) никогда не должен доставлять такой код в транк или аналог. Багажник всегда должен строиться и всегда должен функционировать. Доставка незавершенного кода в транк - почти всегда очень плохая идея. Если вы позволяете разработчику проверять незаконченный или временный код в частной ветке, вы должны положиться на разработчика, чтобы он не забыл очистить код перед доставкой в магистраль.
Чтобы прояснить в ответ на комментарии к другим ответам, если код закомментирован и зарегистрирован, я ожидаю, что код будет работать, если раскомментированные пропадут со временем, в течение которого код был закомментирован. Очевидно, что инструменты рефакторинга не всегда включают комментарии в свой рефакторинг. Почти всегда, если я помещаю закомментированный код в производство, он служит уточненным комментарием, чем-то более конкретным, чем проза, о том, что там что-то нужно сделать. Это не то, что должно иметь долгую жизнь.
Наконец, если вы можете найти закомментированный код в каждом исходном файле, значит, что-то не так. Доставка закомментированного кода в транк по какой-либо причине должна быть редкостью. Если это происходит часто, то это становится беспорядком и теряет свою ценность.