From 7f388c38ba917948f3860f2dbd0e7a3de4a857dd Mon Sep 17 00:00:00 2001 From: JIINHEO Date: Wed, 16 Feb 2022 12:40:12 +0900 Subject: [PATCH 01/11] =?UTF-8?q?Refactor:=20Application=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AppDelegate.swift SceneDelegate.swift 이동 --- JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj | 12 ++++++++++-- .../{Controller => Application}/AppDelegate.swift | 0 .../{Controller => Application}/SceneDelegate.swift | 0 3 files changed, 10 insertions(+), 2 deletions(-) rename JuiceMaker/JuiceMaker/{Controller => Application}/AppDelegate.swift (100%) rename JuiceMaker/JuiceMaker/{Controller => Application}/SceneDelegate.swift (100%) diff --git a/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj b/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj index 468049797..cadc9053d 100644 --- a/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj +++ b/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj @@ -54,8 +54,6 @@ C71CD66D266C7B470038B9CB /* Controller */ = { isa = PBXGroup; children = ( - C73DAF36255D0CDD00020D38 /* AppDelegate.swift */, - C73DAF38255D0CDD00020D38 /* SceneDelegate.swift */, C73DAF3A255D0CDD00020D38 /* ViewController.swift */, ); path = Controller; @@ -104,6 +102,7 @@ C73DAF35255D0CDD00020D38 /* JuiceMaker */ = { isa = PBXGroup; children = ( + E8CEBFAB27BCA96D009CD8DE /* Application */, C71CD66D266C7B470038B9CB /* Controller */, C71CD66F266C7B500038B9CB /* Model */, C71CD671266C7B570038B9CB /* View */, @@ -112,6 +111,15 @@ path = JuiceMaker; sourceTree = ""; }; + E8CEBFAB27BCA96D009CD8DE /* Application */ = { + isa = PBXGroup; + children = ( + C73DAF36255D0CDD00020D38 /* AppDelegate.swift */, + C73DAF38255D0CDD00020D38 /* SceneDelegate.swift */, + ); + path = Application; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ diff --git a/JuiceMaker/JuiceMaker/Controller/AppDelegate.swift b/JuiceMaker/JuiceMaker/Application/AppDelegate.swift similarity index 100% rename from JuiceMaker/JuiceMaker/Controller/AppDelegate.swift rename to JuiceMaker/JuiceMaker/Application/AppDelegate.swift diff --git a/JuiceMaker/JuiceMaker/Controller/SceneDelegate.swift b/JuiceMaker/JuiceMaker/Application/SceneDelegate.swift similarity index 100% rename from JuiceMaker/JuiceMaker/Controller/SceneDelegate.swift rename to JuiceMaker/JuiceMaker/Application/SceneDelegate.swift From 6cea7e680cf0ed587449e8d111a23bfcc1516fe9 Mon Sep 17 00:00:00 2001 From: JIINHEO Date: Wed, 16 Feb 2022 14:04:22 +0900 Subject: [PATCH 02/11] =?UTF-8?q?feat:=20Juciable=20protocol=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj | 4 ---- .../JuiceMaker/Controller/ViewController.swift | 3 +-- JuiceMaker/JuiceMaker/Model/Fruit.swift | 2 +- JuiceMaker/JuiceMaker/Model/Juicable.swift | 12 ------------ 4 files changed, 2 insertions(+), 19 deletions(-) delete mode 100644 JuiceMaker/JuiceMaker/Model/Juicable.swift diff --git a/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj b/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj index cadc9053d..1dfc28c66 100644 --- a/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj +++ b/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj @@ -15,7 +15,6 @@ C73DAF40255D0CDE00020D38 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C73DAF3F255D0CDE00020D38 /* Assets.xcassets */; }; C73DAF43255D0CDF00020D38 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C73DAF41255D0CDF00020D38 /* LaunchScreen.storyboard */; }; C73DAF4C255D0D0400020D38 /* JuiceMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = C73DAF4B255D0D0400020D38 /* JuiceMaker.swift */; }; - E52D141227BBF0B700F6566D /* Juicable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52D141127BBF0B700F6566D /* Juicable.swift */; }; E52D141427BBF2AF00F6566D /* Fruit.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52D141327BBF2AF00F6566D /* Fruit.swift */; }; E52D141627BBF3B400F6566D /* Recipe.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52D141527BBF3B400F6566D /* Recipe.swift */; }; E52D141827BBF48200F6566D /* Juice.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52D141727BBF48200F6566D /* Juice.swift */; }; @@ -33,7 +32,6 @@ C73DAF42255D0CDF00020D38 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; C73DAF44255D0CDF00020D38 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C73DAF4B255D0D0400020D38 /* JuiceMaker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JuiceMaker.swift; sourceTree = ""; }; - E52D141127BBF0B700F6566D /* Juicable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Juicable.swift; sourceTree = ""; }; E52D141327BBF2AF00F6566D /* Fruit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fruit.swift; sourceTree = ""; }; E52D141527BBF3B400F6566D /* Recipe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Recipe.swift; sourceTree = ""; }; E52D141727BBF48200F6566D /* Juice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Juice.swift; sourceTree = ""; }; @@ -64,7 +62,6 @@ children = ( C73DAF4B255D0D0400020D38 /* JuiceMaker.swift */, C71CD66A266C7ACB0038B9CB /* FruitStore.swift */, - E52D141127BBF0B700F6566D /* Juicable.swift */, E52D141327BBF2AF00F6566D /* Fruit.swift */, E52D141527BBF3B400F6566D /* Recipe.swift */, E52D141727BBF48200F6566D /* Juice.swift */, @@ -190,7 +187,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E52D141227BBF0B700F6566D /* Juicable.swift in Sources */, C71CD66B266C7ACB0038B9CB /* FruitStore.swift in Sources */, C73DAF3B255D0CDD00020D38 /* ViewController.swift in Sources */, C73DAF37255D0CDD00020D38 /* AppDelegate.swift in Sources */, diff --git a/JuiceMaker/JuiceMaker/Controller/ViewController.swift b/JuiceMaker/JuiceMaker/Controller/ViewController.swift index 19f26dc83..80e8561e4 100644 --- a/JuiceMaker/JuiceMaker/Controller/ViewController.swift +++ b/JuiceMaker/JuiceMaker/Controller/ViewController.swift @@ -11,8 +11,7 @@ class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. + } - - } diff --git a/JuiceMaker/JuiceMaker/Model/Fruit.swift b/JuiceMaker/JuiceMaker/Model/Fruit.swift index 8d30c69b8..dd40873ec 100644 --- a/JuiceMaker/JuiceMaker/Model/Fruit.swift +++ b/JuiceMaker/JuiceMaker/Model/Fruit.swift @@ -7,7 +7,7 @@ import Foundation -enum Fruit: Juicable, CaseIterable, Hashable { +enum Fruit: CaseIterable { case strawberry case banana case pineapple diff --git a/JuiceMaker/JuiceMaker/Model/Juicable.swift b/JuiceMaker/JuiceMaker/Model/Juicable.swift deleted file mode 100644 index 509e2a213..000000000 --- a/JuiceMaker/JuiceMaker/Model/Juicable.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// Juicable.swift -// JuiceMaker -// -// Created by temp2 on 2022/02/15. -// - -import Foundation - -protocol Juicable { - -} From 6d89f978f644bfd4232a8d664040f222fc63fe4e Mon Sep 17 00:00:00 2001 From: JIINHEO Date: Wed, 16 Feb 2022 14:58:59 +0900 Subject: [PATCH 03/11] =?UTF-8?q?feat:=20makeJuice=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=9D=BC=EB=B6=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JuiceMaker/JuiceMaker/Controller/ViewController.swift | 1 - JuiceMaker/JuiceMaker/Model/JuiceMaker.swift | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/JuiceMaker/JuiceMaker/Controller/ViewController.swift b/JuiceMaker/JuiceMaker/Controller/ViewController.swift index 80e8561e4..795ef1076 100644 --- a/JuiceMaker/JuiceMaker/Controller/ViewController.swift +++ b/JuiceMaker/JuiceMaker/Controller/ViewController.swift @@ -14,4 +14,3 @@ class ViewController: UIViewController { } } - diff --git a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift index ce2d28401..48d8c85e3 100644 --- a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift +++ b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift @@ -15,6 +15,9 @@ struct JuiceMaker { fruitStore.useFruit(juice: juice) return .success } - return .fail(needFruits: []) //TODO: 부족한 과일 종류 전달 필요함 + let outOfStockFruit = juice.recipe.fruitList.map { + $0.fruit + } + return .fail(needFruits: outOfStockFruit) } } From c7968de48953a98bd037a60ce582977737b9a250 Mon Sep 17 00:00:00 2001 From: JIINHEO Date: Wed, 16 Feb 2022 15:03:12 +0900 Subject: [PATCH 04/11] =?UTF-8?q?refactor:=20Fruit=20enum=20name=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JuiceMaker/JuiceMaker/Model/Fruit.swift | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/JuiceMaker/JuiceMaker/Model/Fruit.swift b/JuiceMaker/JuiceMaker/Model/Fruit.swift index dd40873ec..4c2da1605 100644 --- a/JuiceMaker/JuiceMaker/Model/Fruit.swift +++ b/JuiceMaker/JuiceMaker/Model/Fruit.swift @@ -13,4 +13,19 @@ enum Fruit: CaseIterable { case pineapple case kiwi case mango + + var name: String { + switch self { + case .strawberry: + return "딸기" + case .banana: + return "바나나" + case .pineapple: + return "파인애플" + case .kiwi: + return "키위" + case .mango: + return "망고" + } + } } From bdbf4bb82289f38a3f35086f1fbe0529cefef445 Mon Sep 17 00:00:00 2001 From: JIINHEO Date: Wed, 16 Feb 2022 15:07:06 +0900 Subject: [PATCH 05/11] =?UTF-8?q?refactor:=20outOfStockFruits=EB=A5=BC=20n?= =?UTF-8?q?eedFruits=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift | 2 +- JuiceMaker/JuiceMaker/Model/JuiceMaker.swift | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift b/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift index 9a912640d..1ee87b289 100644 --- a/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift +++ b/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift @@ -9,7 +9,7 @@ import Foundation enum JuiceMakeResult { case success - case fail(needFruits: [Fruit]) + case fail(needFruits: [String]) var description: String { switch self { diff --git a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift index 48d8c85e3..2e52b5864 100644 --- a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift +++ b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift @@ -15,9 +15,9 @@ struct JuiceMaker { fruitStore.useFruit(juice: juice) return .success } - let outOfStockFruit = juice.recipe.fruitList.map { - $0.fruit + let needFruits = juice.recipe.fruitList.map { + $0.fruit.name } - return .fail(needFruits: outOfStockFruit) + return .fail(needFruits: needFruits) } } From 6774eda10c81be3e91e91da269f73a6187cbcaf8 Mon Sep 17 00:00:00 2001 From: JIINHEO Date: Wed, 16 Feb 2022 16:15:08 +0900 Subject: [PATCH 06/11] =?UTF-8?q?feat:=20neddFruit=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JuiceMaker/JuiceMaker/Controller/ViewController.swift | 4 ++++ JuiceMaker/JuiceMaker/Model/FruitStore.swift | 10 ++++++++++ JuiceMaker/JuiceMaker/Model/JuiceMaker.swift | 6 ++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/JuiceMaker/JuiceMaker/Controller/ViewController.swift b/JuiceMaker/JuiceMaker/Controller/ViewController.swift index 795ef1076..b0e280496 100644 --- a/JuiceMaker/JuiceMaker/Controller/ViewController.swift +++ b/JuiceMaker/JuiceMaker/Controller/ViewController.swift @@ -12,5 +12,9 @@ class ViewController: UIViewController { super.viewDidLoad() // Do any additional setup after loading the view. + // TEST + let jucieMaker = JuiceMaker() + print(jucieMaker.makeJuice(juice: .strawberryJuice).description) + print(jucieMaker.makeJuice(juice: .strawberryBananaJuice).description) } } diff --git a/JuiceMaker/JuiceMaker/Model/FruitStore.swift b/JuiceMaker/JuiceMaker/Model/FruitStore.swift index c0571d9d4..1d54e5fbe 100644 --- a/JuiceMaker/JuiceMaker/Model/FruitStore.swift +++ b/JuiceMaker/JuiceMaker/Model/FruitStore.swift @@ -45,4 +45,14 @@ class FruitStore { } return true } + + func needFruit(juice: Juice) -> [String] { + var needFruit = [String]() + juice.recipe.fruitList.forEach { + if let currentFruitCount = stock[$0.fruit], currentFruitCount < $0.count { + needFruit.append($0.fruit.name) + } + } + return needFruit + } } diff --git a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift index 2e52b5864..814c92957 100644 --- a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift +++ b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift @@ -15,9 +15,7 @@ struct JuiceMaker { fruitStore.useFruit(juice: juice) return .success } - let needFruits = juice.recipe.fruitList.map { - $0.fruit.name - } - return .fail(needFruits: needFruits) + let needFruitsList = fruitStore.needFruit(juice: juice) + return .fail(needFruits: needFruitsList) } } From 8fe2d9b2441566cc37e02398ef8a79ae7c86d67d Mon Sep 17 00:00:00 2001 From: JIINHEO Date: Wed, 16 Feb 2022 16:33:29 +0900 Subject: [PATCH 07/11] =?UTF-8?q?test:=20Test=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JuiceMaker/JuiceMaker/Controller/ViewController.swift | 5 ----- 1 file changed, 5 deletions(-) diff --git a/JuiceMaker/JuiceMaker/Controller/ViewController.swift b/JuiceMaker/JuiceMaker/Controller/ViewController.swift index b0e280496..82dc3c684 100644 --- a/JuiceMaker/JuiceMaker/Controller/ViewController.swift +++ b/JuiceMaker/JuiceMaker/Controller/ViewController.swift @@ -11,10 +11,5 @@ class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. - - // TEST - let jucieMaker = JuiceMaker() - print(jucieMaker.makeJuice(juice: .strawberryJuice).description) - print(jucieMaker.makeJuice(juice: .strawberryBananaJuice).description) } } From 5c6384316a199e3f78b6f9cb4b8833c686775d0a Mon Sep 17 00:00:00 2001 From: higgs1022 Date: Wed, 16 Feb 2022 20:16:52 +0900 Subject: [PATCH 08/11] =?UTF-8?q?refactor:=20FruitStore=EC=97=90=20?= =?UTF-8?q?=EB=82=A8=EC=95=84=EC=9E=88=EB=8D=98=20fatalError()=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JuiceMaker/JuiceMaker/Model/FruitStore.swift | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/JuiceMaker/JuiceMaker/Model/FruitStore.swift b/JuiceMaker/JuiceMaker/Model/FruitStore.swift index 1d54e5fbe..7630fcf0e 100644 --- a/JuiceMaker/JuiceMaker/Model/FruitStore.swift +++ b/JuiceMaker/JuiceMaker/Model/FruitStore.swift @@ -6,6 +6,10 @@ import Foundation +enum FruitStoreError: String, Error { + case notEnoughFruit = "과일이 부족합니다." +} + // 과일 저장소 타입 class FruitStore { private var stock: [Fruit: Int] = [:] @@ -20,16 +24,22 @@ class FruitStore { } } - private func reduceFruit(fruit: Fruit, count: Int) { + private func reduceFruit(fruit: Fruit, count: Int) throws -> Void { guard let currentFruitCount = stock[fruit], currentFruitCount >= count else { - fatalError() + throw FruitStoreError.notEnoughFruit } stock[fruit] = currentFruitCount - count } func useFruit(juice: Juice) { juice.recipe.fruitList.forEach { fruitInfo in - reduceFruit(fruit: fruitInfo.fruit, count: fruitInfo.count) + do { + try reduceFruit(fruit: fruitInfo.fruit, count: fruitInfo.count) + } catch let error as FruitStoreError { + print(error.rawValue) + } catch { + print(error) + } } } From 11fd5144a61d81632b2fe7006c92a91d1abe16c6 Mon Sep 17 00:00:00 2001 From: higgs1022 Date: Wed, 16 Feb 2022 20:26:10 +0900 Subject: [PATCH 09/11] =?UTF-8?q?refactor:=20=EA=B3=BC=EC=9D=BC=20?= =?UTF-8?q?=EA=B0=AF=EC=88=98=EA=B0=80=20=EB=B6=80=EC=A1=B1=ED=95=A0?= =?UTF-8?q?=EB=95=8C=20=EC=95=A0=EB=9F=AC=20=EC=B2=98=EB=A6=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 과일 종류와 갯수는 알리지 않도록 --- JuiceMaker/JuiceMaker/Model/FruitStore.swift | 10 ---------- JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift | 6 +++--- JuiceMaker/JuiceMaker/Model/JuiceMaker.swift | 3 +-- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/JuiceMaker/JuiceMaker/Model/FruitStore.swift b/JuiceMaker/JuiceMaker/Model/FruitStore.swift index 7630fcf0e..be08bef69 100644 --- a/JuiceMaker/JuiceMaker/Model/FruitStore.swift +++ b/JuiceMaker/JuiceMaker/Model/FruitStore.swift @@ -55,14 +55,4 @@ class FruitStore { } return true } - - func needFruit(juice: Juice) -> [String] { - var needFruit = [String]() - juice.recipe.fruitList.forEach { - if let currentFruitCount = stock[$0.fruit], currentFruitCount < $0.count { - needFruit.append($0.fruit.name) - } - } - return needFruit - } } diff --git a/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift b/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift index 1ee87b289..846022710 100644 --- a/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift +++ b/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift @@ -9,14 +9,14 @@ import Foundation enum JuiceMakeResult { case success - case fail(needFruits: [String]) + case notEnoughFruit var description: String { switch self { case .success: return "쥬스 만들기 성공" - case .fail(let needFruits): - return "과일 \(needFruits) 부족" + case .notEnoughFruit: + return "과일이 부족합니다." } } } diff --git a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift index 814c92957..24636b002 100644 --- a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift +++ b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift @@ -15,7 +15,6 @@ struct JuiceMaker { fruitStore.useFruit(juice: juice) return .success } - let needFruitsList = fruitStore.needFruit(juice: juice) - return .fail(needFruits: needFruitsList) + return .notEnoughFruit } } From c45178552040bbc4932bab34dede93e1f5935cf9 Mon Sep 17 00:00:00 2001 From: higgs1022 Date: Wed, 16 Feb 2022 21:05:13 +0900 Subject: [PATCH 10/11] =?UTF-8?q?refactor:=20=EA=B3=BC=EC=9D=BC=20?= =?UTF-8?q?=EA=B0=AF=EC=88=98=EB=A5=BC=20=EC=B2=B4=ED=81=AC=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EC=A4=91=EB=B3=B5=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2 depth 이상 들어가는 로직 걷어냄 --- .../JuiceMaker.xcodeproj/project.pbxproj | 4 --- JuiceMaker/JuiceMaker/Model/FruitStore.swift | 25 +++---------------- .../JuiceMaker/Model/JuiceMakeResult.swift | 22 ---------------- JuiceMaker/JuiceMaker/Model/JuiceMaker.swift | 12 +++++---- 4 files changed, 10 insertions(+), 53 deletions(-) delete mode 100644 JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift diff --git a/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj b/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj index 1dfc28c66..569d9b731 100644 --- a/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj +++ b/JuiceMaker/JuiceMaker.xcodeproj/project.pbxproj @@ -18,7 +18,6 @@ E52D141427BBF2AF00F6566D /* Fruit.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52D141327BBF2AF00F6566D /* Fruit.swift */; }; E52D141627BBF3B400F6566D /* Recipe.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52D141527BBF3B400F6566D /* Recipe.swift */; }; E52D141827BBF48200F6566D /* Juice.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52D141727BBF48200F6566D /* Juice.swift */; }; - E52D141A27BBFA9D00F6566D /* JuiceMakeResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52D141927BBFA9D00F6566D /* JuiceMakeResult.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -35,7 +34,6 @@ E52D141327BBF2AF00F6566D /* Fruit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fruit.swift; sourceTree = ""; }; E52D141527BBF3B400F6566D /* Recipe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Recipe.swift; sourceTree = ""; }; E52D141727BBF48200F6566D /* Juice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Juice.swift; sourceTree = ""; }; - E52D141927BBFA9D00F6566D /* JuiceMakeResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JuiceMakeResult.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -65,7 +63,6 @@ E52D141327BBF2AF00F6566D /* Fruit.swift */, E52D141527BBF3B400F6566D /* Recipe.swift */, E52D141727BBF48200F6566D /* Juice.swift */, - E52D141927BBFA9D00F6566D /* JuiceMakeResult.swift */, ); path = Model; sourceTree = ""; @@ -191,7 +188,6 @@ C73DAF3B255D0CDD00020D38 /* ViewController.swift in Sources */, C73DAF37255D0CDD00020D38 /* AppDelegate.swift in Sources */, E52D141827BBF48200F6566D /* Juice.swift in Sources */, - E52D141A27BBFA9D00F6566D /* JuiceMakeResult.swift in Sources */, E52D141427BBF2AF00F6566D /* Fruit.swift in Sources */, C73DAF39255D0CDD00020D38 /* SceneDelegate.swift in Sources */, C73DAF4C255D0D0400020D38 /* JuiceMaker.swift in Sources */, diff --git a/JuiceMaker/JuiceMaker/Model/FruitStore.swift b/JuiceMaker/JuiceMaker/Model/FruitStore.swift index be08bef69..db88634a5 100644 --- a/JuiceMaker/JuiceMaker/Model/FruitStore.swift +++ b/JuiceMaker/JuiceMaker/Model/FruitStore.swift @@ -24,35 +24,16 @@ class FruitStore { } } - private func reduceFruit(fruit: Fruit, count: Int) throws -> Void { + private func reduceFruit(fruit: Fruit, count: Int) throws { guard let currentFruitCount = stock[fruit], currentFruitCount >= count else { throw FruitStoreError.notEnoughFruit } stock[fruit] = currentFruitCount - count } - func useFruit(juice: Juice) { - juice.recipe.fruitList.forEach { fruitInfo in - do { - try reduceFruit(fruit: fruitInfo.fruit, count: fruitInfo.count) - } catch let error as FruitStoreError { - print(error.rawValue) - } catch { - print(error) - } - } - } - - func canMakeJuice(juice: Juice) -> Bool { + func useFruit(juice: Juice) throws { for fruitInfo in juice.recipe.fruitList { - guard let currentFruitCount = stock[fruitInfo.fruit] else { - return false - } - - if currentFruitCount < fruitInfo.count { - return false - } + try reduceFruit(fruit: fruitInfo.fruit, count: fruitInfo.count) } - return true } } diff --git a/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift b/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift deleted file mode 100644 index 846022710..000000000 --- a/JuiceMaker/JuiceMaker/Model/JuiceMakeResult.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// JuiceMakeResult.swift -// JuiceMaker -// -// Created by temp2 on 2022/02/16. -// - -import Foundation - -enum JuiceMakeResult { - case success - case notEnoughFruit - - var description: String { - switch self { - case .success: - return "쥬스 만들기 성공" - case .notEnoughFruit: - return "과일이 부족합니다." - } - } -} diff --git a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift index 24636b002..1fd68e68f 100644 --- a/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift +++ b/JuiceMaker/JuiceMaker/Model/JuiceMaker.swift @@ -10,11 +10,13 @@ import Foundation struct JuiceMaker { private var fruitStore: FruitStore = FruitStore() - func makeJuice(juice: Juice) -> JuiceMakeResult { - if fruitStore.canMakeJuice(juice: juice) { - fruitStore.useFruit(juice: juice) - return .success + func makeJuice(juice: Juice) { + do { + try fruitStore.useFruit(juice: juice) + } catch let error as FruitStoreError { + print(error.rawValue) + } catch { + print(error) } - return .notEnoughFruit } } From 59b76a1baf7f6f0da14c40b56113b89fddcc48ad Mon Sep 17 00:00:00 2001 From: higgs1022 Date: Wed, 16 Feb 2022 21:14:26 +0900 Subject: [PATCH 11/11] =?UTF-8?q?docs:=20README.md=20UML=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 50ba2d757..a5827c54a 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ iOS 쥬스 메이커 재고관리 시작 저장소

- + ## 팀원 - [higgs](https://github.com/higgs1022)