refactor: refactor js legacy code

This commit is contained in:
Chaplin Artem 2023-04-22 18:32:03 +03:00
parent 5a4e92199b
commit b439f0631c

View File

@ -1,66 +1,104 @@
class Item { class Item {
constructor(name, sellIn, quality){ constructor(name, sellIn, quality) {
this.name = name; this.name = name;
this.sellIn = sellIn; this.sellIn = sellIn;
this.quality = quality; this.quality = quality;
} }
} }
const itemsTypes = {
BRIE: "Aged brie",
PASS: "Backstage passes to a TAFKAL80ETC concert",
HAND: "Sulfuras, Hand of Ragnaros",
CON: "Conjured"
};
function updateBrie(item) {
if (item.quality < 50) {
item.quality = item.quality + 1;
}
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0 && item.quality < 50) {
item.quality = item.quality + 1;
}
};
function updatePass(item) {
if (item.quality < 50) {
item.quality = item.quality + 1;
if (item.sellIn < 11 && item.quality < 50) {
item.quality = item.quality + 1;
}
if (item.sellIn < 6 && item.quality < 50) {
item.quality = item.quality + 1;
}
}
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0) {
item.quality = item.quality - item.quality;
}
};
function updateHand(item) {};
function updateDefault(item) {
if (item.quality > 0) {
item.quality = item.quality - 1;
}
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0 && item.quality > 0) {
item.quality = item.quality - 1;
}
};
function updateConjured(item) {
if (item.quality > 0) {
item.quality = item.quality - 2;
}
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0 && item.quality > 0) {
item.quality = item.quality - 1;
}
}
class Shop { class Shop {
constructor(items=[]){ constructor(items = []) {
this.items = items; this.items = items;
} }
updateQuality() { updateQuality() {
for (var i = 0; i < this.items.length; i++) { for (const item of this.items) {
if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { switch (item.name) {
if (this.items[i].quality > 0) { case itemsTypes.BRIE:
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { updateBrie(item);
this.items[i].quality = this.items[i].quality - 1; continue;
} case itemsTypes.PASS:
} updatePass(item);
} else { continue;
if (this.items[i].quality < 50) { case itemsTypes.HAND:
this.items[i].quality = this.items[i].quality + 1; updateHand(item);
if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') { continue;
if (this.items[i].sellIn < 11) { case itemsTypes.CON:
if (this.items[i].quality < 50) { updateConjured(item);
this.items[i].quality = this.items[i].quality + 1; default:
} updateDefault(item);
} continue;
if (this.items[i].sellIn < 6) {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
}
}
}
}
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
this.items[i].sellIn = this.items[i].sellIn - 1;
}
if (this.items[i].sellIn < 0) {
if (this.items[i].name != 'Aged Brie') {
if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') {
if (this.items[i].quality > 0) {
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
this.items[i].quality = this.items[i].quality - 1;
}
}
} else {
this.items[i].quality = this.items[i].quality - this.items[i].quality;
}
} else {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
}
} }
} }
return this.items; return this.items;
} }
} }
module.exports = { module.exports = {
Item, Item,
Shop Shop,
} };