0
Завершено

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

Ivan Afanasov 7 年 前 更新人: anonymous 7 年 前 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 вызывается несколько  раз и это может научить людей плохому..



解答

解答
Завершено

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


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


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

很好,我很满意

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

满意度评分用户: Ivan Afanasov 7 年 前
解答
Завершено

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


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


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

UserEcho 的客户支持