Интегрированная поддержка факторизации программного кода
Интегрированная поддержка факторизации программного кода
Одним из главных усовершенствований, предлагаемых в Visual Studio 2006, является встроенная поддержка факторизации программного кода. Говоря упрощенно, факторизация означает формальный "механический" процесс усовершенствования существующего базового кода. В прошлом процесс факторизации предполагал огромные объемы ручного труда. В Visual Studio 2005 значительная часть соответствующей работы выполняется автоматически. Используя меню Refaсtor (Факторизация), соответствующие комбинации клавиш, смарт-теги и/или вызовы контекстного меню с помощью щелчков мыши, вы можете придать своему программному коду совершенно новый вид. затратив на это минимум усилий. В табл. 2.4 приведены некоторые общие команды факторизации, распознаваемые в Visual Studio 2005.
Рис. 2.21. Утилита обзора объектов в Visual Studio 2005
Таблица 2.4. Факторизация в Visual Studio 2005
Метод факторизации Описание Extract Method (выделение метода) Позволяет определить новый метод на основе выделенных операторов программного кода Encapsulate Field (инкапсуляция поля) Превращает открытое поле в приватное, инкапсулированное в свойство C# Extract Interface (выделение интерфейса) Определяет новый интерфейсный тип на основе множества существующих членов типа Reorder Parameters (перестановка параметров) Обеспечивает изменение порядка следования аргументов Remove Parameters (удаление параметров) Удаляет данный аргумент из списка параметров Rename (переименование) Позволяет переименовать лексему программного кода (метод, поле, локальную переменную и т.д.) Promote Local Variable to Parameter (перемещение локальной переменной в параметр) Перемещает локальную переменную в набор параметров определяемого методаЧтобы проиллюстрировать возможности применения средств факторизации на практике, добавьте в метод Main() следующий программный код.
static void Main(string[] args) {
// Определение консольного интерфейса (CUI)
Console.Title = "Мое приложение".;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.Blue;
Console.WriteLine("*************************************");
Cоnsole.WriteLine("******** Это мое приложение! ********");
Console.WriteLine("*************************************");
Console.BackgroundColor = ConsoleColor.Black;
// Ожидание нажатия клавиши для завершения работы.
Console.ReadLine();
}
Этот программный код вполне работоспособен, но представьте себе, что вы хотите отображать генерируемую им подсказку в разных местах вашей программы. Вместо того чтобы вводить вручную операторы определения интерфейса снова и снова, было бы идеально иметь помощника, который мог бы делать это за вас. К счастью, в данном случае вы можете применить к существующему программному коду метод факторизации Extract Method (Выделение метода). Сначала в окне редактора выберите все операторы программного кода (за исключением последнего вызова Console.ReadLine()). Затем щелкните правой кнопкой мыши и из появившегося контекстного меню Refactor выберите опцию Extract Method. В появившемся диалоговом окне укажите имя нового метода – ConfigurеCUI(). В результате вы обнаружите, что теперь метод Main() вызывает новый сгенерированный метод ConfigureCUI(), содержащий ранее выделенный программный код.
class Program {
static void Main (string[] args) {
ConfigureCUI();
// Ожидание нажатия клавиши для завершения работы.
Cоnsole.ReadLine();
}
private static void ConfigureCUI() {
// Определение консольного интерфейса (CUI)
Console.Title = "Мое приложение";
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.Blue;
Console.WriteLine("*************************************");
Cоnsole.WriteLine("******** Это мое приложение! ********");
Console.WriteLine("*************************************");
Console.BackgroundColor = ConsoleColor.Black;
}
}
Замечание, Если вы хотите знать больше о процессе факторизации и ее поддержке в Visual Studio 2005, прочитайте мою статью "Refactoring C# Code Using Visual Studio 2005" (Факторизация программного кода C# в Visual Studio 2005), доступную на страницах http://msdn.microsoft.com.