[重構] 拆分個商品的 function

This commit is contained in:
wengYuting 2022-04-07 18:19:51 +08:00
parent 5b05428942
commit 4e6b0606dd

View File

@ -10,68 +10,63 @@ class Shop {
constructor(items = []) {
this.items = items;
}
/*
反轉負向判定!
中斷程式碼簡化判定
整合判定sellIn 變動提到前面拉齊比對基準
各商品行為抽成單獨的 function
updateQuality => updateItem
*/
updateQuality() {
for (let i = 0; i < this.items.length; i++) {
if (this.items[i].name === "Sulfuras, Hand of Ragnaros") continue;
const item = this.items[i];
if (item.name === "Sulfuras, Hand of Ragnaros") continue;
this.items[i].sellIn = this.items[i].sellIn - 1;
if (this.items[i].name === "Aged Brie") {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
if (this.items[i].sellIn < 0) {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
}
continue;
}
if (this.items[i].name === "Backstage passes to a TAFKAL80ETC concert") {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
if (this.items[i].sellIn < 10 && this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
if (this.items[i].sellIn < 5 && this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
}
if (this.items[i].sellIn < 0) {
this.items[i].quality = this.items[i].quality - this.items[i].quality;
}
continue;
}
if (this.items[i].quality > 0) {
this.items[i].quality = this.items[i].quality - 1;
if (this.items[i].sellIn < 0) {
if (this.items[i].quality > 0) {
this.items[i].quality = this.items[i].quality - 1;
}
}
continue;
item.sellIn = item.sellIn - 1;
switch (item.name) {
case "Aged Brie":
this.updateAgedBrie(item);
break;
case "Backstage passes to a TAFKAL80ETC concert":
this.updateBackstagePasses(item);
break;
default:
this.updateTheOthers(item);
break;
}
}
return this.items;
}
updateAgedBrie(item) {
if (item.quality < 50) {
item.quality = item.quality + 1;
if (item.sellIn < 0) {
item.quality = item.quality + 1;
}
}
}
updateBackstagePasses(item) {
if (item.quality < 50) {
item.quality = item.quality + 1;
if (item.sellIn < 10 && item.quality < 50) {
item.quality = item.quality + 1;
}
if (item.sellIn < 5 && item.quality < 50) {
item.quality = item.quality + 1;
}
}
if (item.sellIn < 0) {
item.quality = item.quality - item.quality;
}
}
updateTheOthers(item) {
if (item.quality > 0) {
item.quality = item.quality - 1;
if (item.sellIn < 0) {
item.quality = item.quality - 1;
}
}
}
}
module.exports = {