Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Инструменты рефакторинга Добавлено: 27.05.12 01:00  

Автор вопроса:  Programmer
Добрый день!

Опишу тип рефакторинга, который мне нужен.

Изначально имеется один большой сверх-ответственный класс на over 9000 строк. Цель рефаторинга - уменьшить ответственность, разделить класс.

1. Я хочу выделить в нем несколько методов, извлечь их в интерфейс, создать на его основе новый класс и перенести эти методы в него (+добавить virtual).

2. В созданном классе нужно заменить все this и обращения к полям (методам) базового класса на использование объекта, получаемого через конструктор.

3. При этом в исходном классе создается поле (или свойство) только что созданного типа, которое инициализируется в конструкторе с передачей (this) в качестве параметра.

4. Все внешние вызовы выбранных методов рефакторятся для использования этого поля.

Пример до рефакторинга:
class abc {
...
 public void a() {...}
...
}
...
abc x;
x.a();


После:

interface abcI {
 void a();
}

class abcIImpl:abcI{
 abc _original;
 public abcIImpl(abc original)
 {
  _original = original;
 }
 public virtual void a() {...}
}

class abc {
...
 public abcI Functions {get;set;}
 abc()
 {
  Functions = new abcIImpl(this);
 }
...
}

...
abc x;
a.Functions.a();



Бывают готовые инструменты для аналогичных ситуаций?

З.Ы. предпросмотр сообщения не помешал бы...

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 27.05.12 06:38
не думаю что ты найдешь инструмент, решающий твою конкретную задачу. Разве что сам такой напишешь.

Ответить

Номер ответа: 2
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #2
Добавлено: 27.05.12 14:20
Прикольно было бы - типа extract method, тока extract class

Ответить

Номер ответа: 3
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #3 Добавлено: 06.09.12 23:42
Новый Resharper 7 имеет такую опцию:
http://habrahabr.ru/company/JetBrains/blog/148105/#29

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам