0
Отвечено

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

Vadim Lamm 5 лет назад обновлен Николай Кляшторный 5 лет назад 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 раза больше. Я понимаю, что умножение - это не тот случай, когда надо экономить :) Но ведь это только пример, а в реальной жизни в этой выделенной функции будет запрос к базе данных.

Ответ

Ответ
Отвечено

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

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

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

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

Ответ
Отвечено

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

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

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

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

Сервис поддержки клиентов работает на платформе UserEcho