Page 65 - 4787
P. 65
тимчасові змінні, які використовуються тільки всередині цього виділеного
коду. Якщо такі змінні є, їх оголошують як тимчасові змінні в створюваному
методі. Треба переконатися, чи модифікує виділений код які-небудь змінні з
локальної областю видимості. Якщо модифікується одна змінна, спробуйте
перетворити виділений код у виклик іншого методу, результат якого
присвоюється цій змінній. Якщо це важко або таких змінних кілька, в
існуючому вигляді виділити метод не можна. Спробуйте спочатку виконати
«Розщеплення тимчасової змінної» (Split Temporary Variable), а потім знову
виділити метод. Тимчасові змінні можна ліквідувати за допомогою «Заміни
тимчасових змінних викликом методів» (Replace Temp with Query).
Передайте в створюваний метод як параметри змінні з локальної областю
видимості, читання яких здійснюється у виділеному коді. Впоравшись з усіма
локальними змінними, виконайте компіляцію. Замініть у вихідному методі
виділений код викликом створеного методу. Якщо будь-які тимчасові змінні
переміщені в створений метод, знайдіть їх оголошення поза виділеним кодом.
Якщо такі є, можна їх видалити.
Приклад 2. Заміна тимчасової змінної викликом методу.
Тимчасова змінна використовується для зберігання значення виразу.
Перетворіть вираз у метод. Замініть всі посилання на тимчасову змінну
викликом методу. Новий метод може бути використаний в інших методах.
До проведення рефакторингу
double basePrice = _quantity * _itemPrice;
if (basePrice > 1000) {
return basePrice * 0.95;
}
else {
return basePrice * 0.98;
64