0
Answered

Рефакторинг: Замена переменной вызовом метода

Vadim Lamm 5 years ago updated by Николай Кляшторный 5 years ago 1

Добрый день!

Начал читать рефакторинг и сразу вопрос :)

В "Замена переменной вызовом метода" предлагается заменить код:

double calculateTotal() {
  double basePrice = quantity * itemPrice;
  if (basePrice > 1000) {
    return basePrice * 0.95;
  }
  else {
    return basePrice * 0.98;
  }
}

на

double calculateTotal() {
  if (basePrice() > 1000) {
    return basePrice() * 0.95;
  }
  else {
    return basePrice() * 0.98;
  }
}
double basePrice() {
  return quantity * itemPrice;
}

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

Answer

Answer
Answered

Здравствуйте, Вадим!

Спасибо за вопрос! Так как мне его уже задавали, позволю себе сослаться на предыдущие ответы:

https://feedback.refactoring.guru/communities/3/topics/472-replace-temp-with-query-question

https://feedback.refactoring.guru/communities/1/topics/30-dopolnenie-pro-replace-temp-with-query?lang=uk

Дайте мне знать, если требуется что-то добавить.

Answer
Answered

Здравствуйте, Вадим!

Спасибо за вопрос! Так как мне его уже задавали, позволю себе сослаться на предыдущие ответы:

https://feedback.refactoring.guru/communities/3/topics/472-replace-temp-with-query-question

https://feedback.refactoring.guru/communities/1/topics/30-dopolnenie-pro-replace-temp-with-query?lang=uk

Дайте мне знать, если требуется что-то добавить.