Извлечение единственной строки кода

Оценить
(0 голоса)

Иногда вам может понадобиться извлечь в качестве метода единственную строку кода (или часть ее). Например, у вас может иметься вычисление, которое выполняется как часть стро­ки кода, но носит достаточно общий характер для того, чтобы быть оформленным в качест­ве отдельного метода. Либо вам может понадобиться извлечь присваивание объекта (для того, чтобы добавить в него дополнительную логику). В любом случае редактор кода C# поддерживает такой тип извлечения.

Извлечение единственной строки кода

Рассмотрим пример. Предположим, что у вас есть следующая строка кода, в которой вы­числяется сумма по заказу (в цикле по позициям заказа):

total = total + item.Quantity * item. UnitPrice;

Вам нужно извлечь ту часть присваивания, которая вычисляет сумму по позиции заказа (ко­личество х цена позиции). Для этого вы просто выделяете часть кода и вызываете опера­цию рефакторинга Extract Method. На рис. 9.13 показана эта операция.

Обратите внимание, что по умолчанию новый метод захочет получить экземпляр Orderltem. Однако вы, возможно, предпочтете передать вместо него количество и цену позиции. Это изменение вам придется сделать вручную. Вы можете сделать это при помощи создания переменных в новом методе и выполнения операции рефакторинга Promote Local to Parameter (описывается далее в этой главе). Если же количество и цена позиции были присвоены переменным до извлечения, то вы получите новый метод, который принимает эти параметры (а не экземпляр Orderltem). Это продемонстрировано на рис. 9.14.

Операция рефакторинга заменяет часть строки кода следующим:

total = total + GetltemTotal(qty, unitPrice);

и добавляет такой новый метод:

private static double GetltemTotal(int qty, double unitPrice) { return qty * unitPrice;

}

Извлечение единственной строки кода

Генерируем заглушку метода
Извлечение интерфейса
Доступ к операции Extract Interface
Извлечение интерфейсов
Параметры рефакторинга

Добавить комментарий


Защитный код
Обновить

© 2017 www.visualstudios.ru. Все права защищены.