Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство_по_C#.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
10 Мб
Скачать
☆

2.9Рефакторинг кода

При создании приложений многие разработчики сначала заботятся об их функциональности, а когда она обеспечена, переделывают приложения таким образом, чтобы они были более управляемыми и удобочитаемыми. Это называется рефакторингом (refactoring). Под рефакторингом понимается процесс переделки кода для повышения удобочитаемости и производительности приложений, а также обеспечения безопасности типов и приведения кода к такому виду, в котором он лучше соответствует рекомендуемым приемам ООП. К счастью, теперь в Visual Studio 2010 можно достаточно хорошо автоматизировать этот процесс.

За счет использования меню Refactor (Рефакторинг), которое становится доступным при открытом файле кода, а также соответствующих клавиатурных комбинаций быстрого вызова, смарт-тегов (smart tags) и/или вызывающих контекстные меню щелчков, можно существенно видоизменять код с минимальным объемом усилий. В следующей таблице перечислены некоторые наиболее распространенные приемы рефакторинга, которые распознаются в Visual Studio 2010:

Возможности рефакторинга кода

Прием рефакторинга

Описание

Extract Method

(Извлечение метода)

Позволяет определять новый метод на основе выбираемых операторов программного кода

Encapsulate Field

(Инкапсуляция поля)

Позволяет превращать общедоступное поле в приватное, инкапсулированное в форму свойство C#

Extract Interface

(Извлечение интерфейса)

Позволяет определять новый тип интерфейса на основе набора существующих членов типа

Reorder Parameters (Переупорядочивание параметров)

Позволяет изменять порядок следования аргументов в члене

Remove Parameters

(Удаление параметров)

Позволяет удалять определенный аргумент из текущего списка параметров

Rename

(Переименование)

Позволяет переименовывать используемый в коде метод, поле, локальную переменную и т.д. по всему проекту

Чтобы увидеть процесс рефакторинга в действии, давайте модифицируем метод Main(), добавив в него следующий код:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

// Настраиваем консольный интерфейс (CUI)

Console.Title = "Мое приложение";

Console.ForegroundColor = ConsoleColor.Yellow;

Console.BackgroundColor = ConsoleColor.Blue;

Console.WriteLine("Привет, это мой проект!");

Console.BackgroundColor = ConsoleColor.Black;

Console.ReadLine();

}

}

}

В таком, как он есть виде, в этом коде нет ничего неправильного, но давайте представим, что возникло желание сделать так, чтобы данное приветственное сообщение отображалось в различных местах по всей программе. В идеале вместо того, чтобы заново вводить ту же самую отвечающую за настройку консольного интерфейса логику, было бы неплохо иметь вспомогательную функцию, которую можно было бы вызывать для решения этой задачи. С учетом этого, попробуем применить к существующему коду прием рефакторинга Extract Method (Извлечение метода).

Для этого выделите в окне редактора все содержащиеся внутри Main() операторы, кроме последнего вызова Console.ReadLine(), и щелкните на выделенном коде правой кнопкой мыши. Выберите в контекстном меню пункт Refactor --- Extract Method (Рефакторинг --- Извлечь метод).

В открывшемся далее окне назначьте новому методу имя MyConfigCUI():

После этого метод Main() станет вызывать новый только что сгенерированный метод MyConfigCUI(), внутри которого будет содержаться выделенный ранее код:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

//Настраиваем консольный интерфейс (CUI)

MyConfigCUI();

Console.ReadLine();

}

private static void MyConfigCUI()

{

Console.Title = "Мое приложение";

Console.ForegroundColor = ConsoleColor.Yellow;

Console.BackgroundColor = ConsoleColor.Blue;

Console.WriteLine("Привет, это мой проект!");

Console.BackgroundColor = ConsoleColor.Black;

}

}

}

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

  • переименование методов, локальных переменных, полей и множества других элементов

  • извлечение методов из выделяемых фрагментов кода

  • извлечение интерфейсов на основе набора существующих членов типа

  • превращение локальных переменных в параметры

  • переименование или переупорядочивание параметров

Предлагаемые Visual Studio 2010 возможности рефакторинга представляют собой поистине замечательный способ для получения более чистого, удобочитаемого и лучше структурированного кода.