0
Completed

Неудачный пример

Ivan Afanasov 2 years ago updated by Alexander Shvets 2 years ago 1

Похоже, что это не совсем удачный пример.. 


https://refactoring.guru/home/slides/long-method/7/


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

Здесь метод BasePrice вызывается несколько  раз и это может научить людей плохому..



Answer

Answer
Completed

Иван, спасибо за комментарий!


Вы не поверите, но это, пожалуй, один из самых обсуждаемых примеров за все время жизни проекта. Я соглашусь, что пример сам по себе не очень убедительный. Сам бы я тоже скорей всего не трогал первоначальный код, если бы не планировал дальнейших изменений.


Однако даже с таким применением, есть не совсем очевидная польза. Вы можете нарезать получившийся метод на подметоды, не волнуясь о переносе переменных.

GOOD, I'M SATISFIED

Если с расчётом на это, тогда соглашусь) Просто не смог бы оставить так код :)

Satisfaction mark by Ivan Afanasov 2 years ago
Answer
Completed

Иван, спасибо за комментарий!


Вы не поверите, но это, пожалуй, один из самых обсуждаемых примеров за все время жизни проекта. Я соглашусь, что пример сам по себе не очень убедительный. Сам бы я тоже скорей всего не трогал первоначальный код, если бы не планировал дальнейших изменений.


Однако даже с таким применением, есть не совсем очевидная польза. Вы можете нарезать получившийся метод на подметоды, не волнуясь о переносе переменных.