Refactored code- Adapted method to remove redundant method calls for quality update

This commit is contained in:
lekshmysasidhar 2023-03-31 13:33:24 +02:00
parent 0b064047da
commit 7ec3761989
3 changed files with 11 additions and 9 deletions

View File

@ -5,17 +5,18 @@ import static com.gildedrose.rule.ValidationRule.isExpired;
public class AgedBrie implements Goods { public class AgedBrie implements Goods {
private static final int MAX_ALLOWED_QUALITY = 50; private static final int MAX_ALLOWED_QUALITY = 50;
private static final int QUALITY_TO_ADD = 1;
@Override @Override
public void updateQuality(Item item) { public void updateQuality(Item item) {
Goods.super.addQualityWhenWithInLimit(item, MAX_ALLOWED_QUALITY); Goods.super.addQualityWhenWithInLimit(item, MAX_ALLOWED_QUALITY, QUALITY_TO_ADD);
} }
@Override @Override
public void updateQualityForExpiredItem(Item item) { public void updateQualityForExpiredItem(Item item) {
if (isExpired(item)) { if (isExpired(item)) {
Goods.super.addQualityWhenWithInLimit(item, MAX_ALLOWED_QUALITY); Goods.super.addQualityWhenWithInLimit(item, MAX_ALLOWED_QUALITY, QUALITY_TO_ADD);
} }
} }

View File

@ -8,19 +8,20 @@ public class BackStagePasses implements Goods {
private static final int SELL_IN_MAX_THRESHOLD_DAY = 11; private static final int SELL_IN_MAX_THRESHOLD_DAY = 11;
private static final int SELL_IN_MIN_THRESHOLD_DAY = 6; private static final int SELL_IN_MIN_THRESHOLD_DAY = 6;
private static final int ZERO = 0; private static final int ZERO = 0;
private static final int DEFAULT_QUALITY_TO_ADD = 1;
@Override @Override
public void updateQuality(Item item) { public void updateQuality(Item item) {
Goods.super.addQualityWhenWithInLimit(item, MAX_ALLOWED_QUALITY); int qualityToAdd = DEFAULT_QUALITY_TO_ADD;
if (isWithInLimit(SELL_IN_MAX_THRESHOLD_DAY, item.sellIn)) { if (isWithInLimit(SELL_IN_MAX_THRESHOLD_DAY, item.sellIn)) {
Goods.super.addQualityWhenWithInLimit(item, MAX_ALLOWED_QUALITY); qualityToAdd++;
} }
if (isWithInLimit(SELL_IN_MIN_THRESHOLD_DAY, item.sellIn)) { if (isWithInLimit(SELL_IN_MIN_THRESHOLD_DAY, item.sellIn)) {
Goods.super.addQualityWhenWithInLimit(item, MAX_ALLOWED_QUALITY); qualityToAdd++;
} }
Goods.super.addQualityWhenWithInLimit(item, MAX_ALLOWED_QUALITY, qualityToAdd);
} }
@Override @Override
public void updateQualityForExpiredItem(Item item) { public void updateQualityForExpiredItem(Item item) {

View File

@ -12,9 +12,9 @@ public interface Goods {
public void updateQualityForExpiredItem(Item item); public void updateQualityForExpiredItem(Item item);
default void addQualityWhenWithInLimit(Item item, int limit) { default void addQualityWhenWithInLimit(Item item, int limit, int qualityToAdd) {
if (isWithInLimit(limit, item.quality)) { if (isWithInLimit(limit, item.quality)) {
item.quality++; item.quality = Math.min(limit, item.quality + qualityToAdd);
} }
} }
} }