Я б напевно відмовляв, наполегливо, коли-небудь перевіряв коментований код. Однак я б не заборонив цього абсолютно. Іноді (якщо рідко) доречно перевірити коментований код у вихідному контролі. Висловлювання "ніколи цього не роби" надто обмежує.
Думаю, ми всі згодні з цими пунктами:
- Ніколи не перевіряйте мертвий код у джерелі контролю
- Ніколи не перевіряйте непрацюючий (непрацюючий) код у вихідному контролі, принаймні ніколи не передавайте транки та лише дуже рідко приватному відділенню, YMMV
- Якщо ви тимчасово щось прокоментували або зламали з метою налагодження, не перевіряйте код, поки не відновите код у правильній формі
Деякі кажуть, що існують інші категорії, такі як тимчасово видалений код, або додаткове, але неповне вдосконалення, яке включає невелику кількість коментованого коду як документацію того, що буде далі, або дуже короткий (в ідеалі 1 рядок) фрагмент коментованого код, що показує щось, що ніколи не слід повторно додавати. Коментований код ЗАВЖДИ повинен супроводжуватися коментарем, який говорить про те, чому його коментують (а не просто видаляють), і вказує очікуваний термін служби коментованого коду. Наприклад, "Наступний код приносить більше шкоди, ніж користі, тому коментується, але його потрібно замінити перед випуском XXX."
Подібний коментар доречний, якщо ви постачаєте виправлення, щоб зупинити кровотечу у клієнта, і у вас немає негайної можливості знайти остаточне виправлення. Після доставки виправлення коментований код нагадує, що у вас все ще є щось, що потребує виправлення.
Коли мені реєструвати коментований код? Один із прикладів - коли я попередньо видаляю те, що, на мою думку, існує велика ймовірність, що його потрібно буде додати найближчим часом у якійсь формі. Коментований код повинен служити прямим нагадуванням про те, що він є неповним. Звичайно, стара версія знаходиться під контролем джерела, і ви можете просто використовувати коментар FIXME як прапор, що потрібно щось більше. Однак іноді (якщо не часто) код є кращим коментарем.
Крім того, коли помилка виправлена видаленням одного рядка (або рідше двох рядків) коду, я іноді просто коментую рядок коментарем, щоб ніколи не вмикати цей код із причиною. Цей коментар є чітким, прямим та стислим.
Рекс М сказав: 1) Перевірте лише повну функціональність, 2) [Якщо] завдання занадто велике - розбийте його на менші, які можна виконати.
У відповідь: так, це ідеал. Іноді жоден із варіантів недосяжний, коли ви працюєте над виробничим кодом і маєте вирішити негайну, критичну проблему. Іноді, щоб виконати завдання, потрібно на деякий час додати в поле версію коду. Це особливо актуально для змін коду збору даних, коли ви намагаєтеся знайти першопричину проблеми.
Для конкретного екземпляра, про який запитується в більш загальному питанні ... до тих пір, поки розробник перевіряє коментований код у приватну гілку, яку ніхто не побачить, крім цього розробника (і, можливо, хтось із розробником співпрацює з ним), це завдає мало шкоди. Але цей розробник не повинен (майже) ніколи передавати такий код у транк або еквівалент. Магістраль завжди повинна будуватися і повинна завжди функціонувати. Доставка незавершеного коду до транка майже завжди є дуже поганою ідеєю. Якщо ви дозволяєте розробнику перевіряти незавершений або тимчасовий код у приватну гілку, то вам доведеться покладатися на розробника, щоб він не забув очистити код перед доставкою в магістраль.
Щоб пояснити у відповідь на коментарі до інших відповідей, якщо код коментується та реєструється, я сподіваюся, що код буде функціонувати, якщо не коментований зменшиться з часом, коли код був прокоментований. Очевидно, що інструменти рефакторингу не завжди включатимуть коментарі до свого рефакторингу. Майже завжди, якщо я ввожу коментований код у виробництво, код є там, щоб слугувати уточненим коментарем, чимось більш конкретним, ніж проза, що там потрібно щось робити. Це не те, що повинно мати довге життя.
Нарешті, якщо ви можете знайти коментований код у кожному вихідному файлі, то щось не так. Подання коментованого коду в магістраль з будь-якої причини має бути рідкісною подією. Якщо це трапляється часто, тоді воно стає безладним і втрачає свою цінність.