From 4e6b0606ddc03d76d7a41c27507c3abaa250673b Mon Sep 17 00:00:00 2001 From: wengYuting Date: Thu, 7 Apr 2022 18:19:51 +0800 Subject: [PATCH] =?UTF-8?q?[=E9=87=8D=E6=A7=8B]=20=E6=8B=86=E5=88=86?= =?UTF-8?q?=E5=80=8B=E5=95=86=E5=93=81=E7=9A=84=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js-jest/src/gilded_rose.js | 101 ++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 53 deletions(-) diff --git a/js-jest/src/gilded_rose.js b/js-jest/src/gilded_rose.js index 6e70aba5..09227037 100644 --- a/js-jest/src/gilded_rose.js +++ b/js-jest/src/gilded_rose.js @@ -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 = {