извлекать суперкласс из нескольких классов и наследовать от него - PullRequest
5 голосов
/ 13 октября 2011

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

Как правильно выполнить этот рефакторинг с помощью ReSharper 6? Я могу извлечь суперкласс из одного из классов, но что дальше? Нужно ли вручную потом выводить из этого базового класса и искать одинаковые члены в каждом классе, который я хочу получить?

1 Ответ

6 голосов
/ 13 октября 2011
  1. Запустите все свои юнит-тесты и убедитесь, что они прошли
  2. Извлеките базовый класс из одного из ваших классов. Назовите это BaseClass или что-то
  3. Запустите все свои юнит-тесты ...
  4. Извлеките базовый класс из другого вашего класса. Назовите это BaseClass2 или что-то
  5. Запустите все свои юнит-тесты ...
  6. Сравните BaseClass и BaseClass2 строку для строки. Если они не идентичны, то сделайте их рефакторинг, чтобы сделать их идентичными.
  7. Часто запускаются все ваши юнит-тесты ...
  8. Как только они будут идентичны, измените все ссылки на BaseClass2 на BaseClass
  9. Удалить неиспользованные BaseClass2
  10. Запустите свои юнит-тесты ...

Повторите при необходимости.

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

...