Как Вы удаляете функциональность из программы в рубине?

У Вас есть некоторый код, который Вы хотите удалить связанный с устаревшей частью функциональности из рубинового проекта. Как действительно гарантируют, чтобы Вы избавились от всего кода?

Некоторые инструкции, которые обычно помогают в рефакторинге рубина, применяются, но там добавляются проблемы, потому что наличие кода, который не называет ничто, не повредит модульных тестов.

Обновление: кто-либо записал что-нибудь, что позволяет Вам предполагать на основе Вашей истории управления версиями, если существуют фиксации, где Вы с тех пор удалили больше всего, но не все, кода и можете указать на остающийся код?

1
задан Community 23 May 2017 в 11:47
поделиться

3 ответа

Текущие мысли:

  • Определите самую внешнюю часть стека, связанную с устаревшей функциональностью: вызывающий ее бинарный скрипт или вызывающие ее модульные тесты.
  • Ищите методы, которые вызываются только методами, связанными с устаревшей функциональностью. Я часто использую для этого git grep.
  • Теоретически, проведение мутационного тестирования и поиск кода, который раньше был устойчив к мутациям, когда применялся старый набор тестов, но теперь подвержен мутациям, может помочь. Это поможет только в том случае, если ваш код изначально был хорошо протестирован! (Или вы можете использовать инструменты покрытия кода, такие как rcov, а не мутационное тестирование)
  • Запуск тестовых наборов позволит убедиться, что вы не удалили ничего, что не следовало удалять!
    • Использование автотестирования может сэкономить вам время, если вы постоянно запускаете тесты.
  • Если ваш код был хорошо структурирован, вам будет легче найти связанные методы, которые нужно удалить.
2
ответ дан 3 September 2019 в 00:47
поделиться

Особенно в динамически типизированном языке, нет простого способа сделать это. Если у вас есть unittests, поблагодарите разработчика, который их написал, потому что это поможет вам правильно удалить код. Но в основном вы остаетесь в стороне. Удалите код, если он сломался, верните его обратно, выясните, где он сломался, попытайтесь обойти это и повторите.

0
ответ дан 3 September 2019 в 00:47
поделиться

Посмотрите на покрытие кода. Любой код, который не покрыт, может быть частью кода, который вам осталось удалить (если таковой имеется). (Только убедитесь, что вы удалили тесты =])

.
0
ответ дан 3 September 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: