Иногда вам может понадобиться извлечь в качестве метода единственную строку кода (или часть ее). Например, у вас может иметься вычисление, которое выполняется как часть строки кода, но носит достаточно общий характер для того, чтобы быть оформленным в качестве отдельного метода. Либо вам может понадобиться извлечь присваивание объекта (для того, чтобы добавить в него дополнительную логику). В любом случае редактор кода 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;
}