Какой будет лучший подход? Напишите для них юнит-тесты или вопрос, почему они там?
Удаление кода это хорошая вещь.
Если вы не можете удалить код, вы, безусловно, можете пометить его как @Deprecated , документируя, на какой основной выпуск вы нацелены, чтобы удалить метод. Тогда вы можете удалить его «позже». В то же время будет ясно, что не следует добавлять новый код, который зависит от него.
Я бы не рекомендовал вкладывать средства в устаревшие методы, так что никаких новых юнит-тестов просто для достижения целей покрытия.
Разница между ними заключается в том, являются ли методы частью опубликованного интерфейса . Произвольное удаление частей опубликованного интерфейса может стать неприятным сюрпризом для потребителей, которые зависели от интерфейса.
Я не могу говорить с EclEmma, но из моего опыта одна из вещей, о которых вам нужно быть осторожным, это рефлексия. Если, например, вы используете текстовые файлы конфигурации, чтобы выбрать, к каким классам / методам обращаться, различие между использованным и неиспользованным может быть неочевидным (я был сожжен этим несколько раз).
Если ваш проект представляет собой лист в графе зависимостей, то аргумент об устаревании ослаблен. Если ваш проект представляет собой библиотеку, то аргумент в пользу устаревания более силен.
Если ваша компания использует моно-репо , то удаление имеет меньший риск, чем в случае мульти-репо.
Как отмечает l0b0 , если методы уже доступны в управлении исходным кодом, их восстановление после удаления является простым упражнением. Если вы действительно беспокоились о необходимости сделать это, подумайте, как организовать свои коммиты, чтобы вы могли восстановить удаленные изменения, если они вам нужны.
Если неопределенность достаточно высока, вы можете закомментировать код , а не удалять его. Это дополнительная работа по счастливому пути (где удаленный код никогда не восстанавливается), но он облегчает восстановление. Я предполагаю, что вы должны предпочесть прямое удаление, пока вы не сгорели этим пару раз, что даст вам некоторое представление о том, как оценить «неопределенность» в этом контексте.
вопрос почему они там?
Время, потраченное на захват знаний, не обязательно тратится впустую. Мне известно, что удаление выполнялось в два этапа: сначала добавив и зафиксировав комментарий, объясняющий то, что мы узнали о коде, а затем удалив код (и комментарий).
Вы также можете использовать что-то похожее на записи архитектурных решений как способ захвата знаний с исходным кодом.