Две мысли в голове. Одна моя, другая позаимствованная.
С бейсбольной битой в руках разыскивается тот человек который первый в IDE добавил возможность copy/paste. Блин, жили бы, горя не знали, если бы не эта зараза.
Вторая мысль более длинная. Терпеть не могу, когда кто-то закомментирует код и добавляет комментарий. Исправление бага номер такой-то. Если код не нужен, то почему бы его не удалить вообще, если он таки может быть нужен, так может написать почему его оставили. Ну и плюс, лезешь — ищешь этот баг, потом лезешь смотреть изменение целиком относительно этого бага и все эта беготня в результате, чтобы удалить 4 строки мазолящие глаза.
Это очень древняя традиция, и имеет целью не заставлять человека лазить по изменениям кода (тогда и CVS не существовало, когда это придумали).
Ну, как бы, пора уже этой традиции уйти в прошлое. Так как сейчас это только затрудняет работу.
Везде надо действовать по ситуации. Если система рабочая, то чем больше в коде информации о том, почему он именно такой, тем лучше.
К сожалению, способных разумно работать с изменениями кодеров кот наплакал, поэтому надо строить бюрократическую систему управления разработкой, такую, чтобы действительно можно было удалить из текущей версии ненужный закомментированный код.
С большими системами работать приходится? Миллион строк есть?
Сложно сказать насчет размера системы. Я работаю над несколькими продуктами, а на эту ситуацию набрел на одном ключевом модуле. Что правда приятно, что он начинался эдак с 1MB сорцов и я его без потери функциональности урезал уже до 500Kb и он стал гораздо более понятно/вменяемый.
1. Это проблема не IDE (она должна давать максимум свобод и возможностей), а конкретного программиста. Трудно посчитать, сколько раз в день я делаю copy/paste, но повторяющегося кода у меня нету.
2. Иногда так делаю, когда фиче-реквест явно отдает глупостью. И я почти уверен, что придется восстанавливать прежнюю функциональность.
1. Согласен только на половину.
Когда маленьких детей оставляют в комнате, даже на 3 минуты, то рекомендуют убирать все колющие, режущие, тяжелые, разбиваемые вещи.
В этом смысле малоопытный разработчик ничем не отличается от ребенка. Если от него не убрать что-то опасное, то он точно туда влезет.
Так, что это проблема родителей (в смысле senior developer’ов), что они не могу таки выключить это меню у неопытных разработчиков.
2. Да, я сам так бывает делаю, но именно для каких-то новых странных фич. Для багов так все таки делать не стоит.
1. Но опять таки, это не проблема IDE, ни тем более ее создателей. Так же глупо обвинять авто-строителей за то, что в автомобильных авариях ежегодно гибнет больше людей, чем в авикатастрофах. Вопрос во внешних факторах. Возвращаясь к программистам 🙂 , если компания серьезно следит за качеством кода, то никакого copy-paste-а не появится
2. Для багов (да и для разработки в целом) хорошо иметь навые раннего обнаружения «плохого запаха» в коде, и мгновенно применять рефакторинг на этот участке.
Да, естественно проблема не в IDE 😉 Это я так к слову 😉
А к чему тогда ты это, не к CVS же.
Соглашусь с большинством ораторов по поводу первого: убивать надо не создателей IDE, а кривых безмозглых кодеров.
А по второму я бы не был столь категоричен. Раньше тоже грешил тем, что удалял к чертям забаженный код и писал сверху свое. Но если ты 1с-ник, и твою ИС на 150 юзеров админят и дорабатывают напильниками несколько человек, то удаление даже глючного кода может иметь катастрофические последствия. Да и в простом php, сделаешь новую фичу на сайте, а она глючит и тормозит, надо вернуть как было. Хорошо если старый код закомментирован, иначе снова пол-дня убьешь. А закомментированные баги оставляю, чтобы потомкам неповадно было повторять ошибки.
И все таки, я бы все не валил на плохих кодеров. Зачастую неопытный человек пользует то, что у него под руками. Соотвественно о ни пользует copy/paste. Была бы там только функция Move code, может быть он задумался бы.
Насчет переписывания кода. Согласен — это дело опасное. Хотя все равно, если оставляешь закомментированный старый код — это помогает не слишком. Так как, если другой человек исправляет новые внесенные ошибки, ему все равно придется первым делом найти место. А когда место найдено, всего-то нужна одна дополнительная операция (полезть в историю системы контроля версий), чтобы найти кто изменял, почему изменял и как выглядел старый код.
CVS вещь — просто непомеренную кучу закоментированного кода выкосил которую раньше было жалко пофигачить
Автоматизатор +1, полностью согласен