Question du test Java et Craftsmanship

Améliorer la maintenabilité de ce code en utilisant la polymorphisme pour les items.

Intermédiaire

Ce code fonctionne et répond aux besoin du client, il peut cependant être encore largement amélioré.

Quelles sont les propositions pour les prochaines étapes pour améliorer la maintenabilité qui paraissent pertinentes

class GildedRose {

  private static final String SULFURAS_NAME = "Sulfuras, Hand of Ragnaros";
  private static final String BACKSTAGE_PASSES_NAME = "Backstage passes to a TAFKAL80ETC concert";
  private static final String AGED_BRIE_NAME = "Aged Brie";
  Item[] items;

  public GildedRose(Item[] items) {
    this.items = items;
  }

  public void updateQuality() {
    for (Item item : items) {
      if (SULFURAS_NAME.equals(item.name)) {
        continue;
      }

      item.sellIn = item.sellIn - 1;

      if (AGED_BRIE_NAME.equals(item.name)) {
        updateAgedBrie(item);
      } else if (BACKSTAGE_PASSES_NAME.equals(item.name)) {
        updateBackstagePass(item);
      } else {
        updateNormalItem(item);
      }
    }
  }

  private void updateAgedBrie(Item item) {
    increaseQuality(item);

    if (item.sellIn < 0) {
      increaseQuality(item);
    }
  }

  private void updateBackstagePass(Item item) {
    increaseQuality(item);

    if (item.sellIn < 10) {
      increaseQuality(item);
    }

    if (item.sellIn < 5) {
      increaseQuality(item);
    }

    if (item.sellIn < 0) {
      item.quality = 0;
    }
  }

  private void updateNormalItem(Item item) {
    decreaseQuality(item);

    if (item.sellIn < 0) {
      decreaseQuality(item);
    }
  }

  private void increaseQuality(Item item) {
    if (item.quality < 50) {
      item.quality = item.quality + 1;
    }
  }

  private void decreaseQuality(Item item) {
    if (item.quality > 0) {
      item.quality = item.quality - 1;
    }
  }
}
Auteur: Clément DevosStatut : PubliéeQuestion passée 318 fois
Modifier
0
Évaluations de la communautéPersonne n'a encore évalué cette question, soyez le premier !