Использование метода геттера - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть сценарий, в котором продавец настроил следующие комиссии:

BigDecimal paidPlanFixedFee
BigDecimal fixedFee
Boolean isPaidPlan

Теперь, если продавец заплатил план, он должен использовать paidPlanFixedFee при инициировании платежей и fixedFee, если продавец находится на бесплатном плане.

Один из подходов состоит в том, чтобы изменить код везде, где упоминается fixedFee, как:

if(paidPlan){
// Use paidPlanFixedFee
}else{
// Use fixedFee
}

Другой подход состоит в том, чтобы изменить только в методе получения fixedFee:

BigDecimal getFixedFee(){
  if(paidPlan){
    // return paidPlanFixedFee
  } else{
   // return fixedFee
  }
}

Является ли хорошей практикой использование метода метода получения в этом сценарии или его следует избегать?

1 Ответ

0 голосов
/ 02 ноября 2018

Похоже, переопределение геттера с этой логикой не очень хорошая идея. В этом случае вы должны контролировать каждое использование геттера (например, сериализацию json, сопоставления модели БД и т. Д.), Поскольку это может вызвать проблемы, если где-то вам потребуется получить исходное значение.

Лучше иметь отдельный метод calcFee ()

А как насчет переходного поля?

Если вы создадите геттер без фактического поля в groovy:

BigDecimal getFee(){
  paidPlan ? paidPlanFixedFee : fixedFee
}

тогда вы можете получить к нему доступ как к обычному полю:

println instance.fee

В этом случае вам необходимо изменить fixedFee на плату, на которую ссылается fixedFee Но после этих изменений все будущие модификации будут проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...