From bfa0a1ab373b2ea161d742aab9f809933b777e3b Mon Sep 17 00:00:00 2001 From: Mykyta-Panchenko Date: Fri, 7 Feb 2025 11:49:28 +0200 Subject: [PATCH 1/2] Refactored Pub.java Description: Moved drink price calculation to getDrinkPrice() method. Moved ingredient prices to a Map for better maintainability. Fixed string comparison issues by replacing == with .equals(). Moved student discount logic to isEligibleForStudentDiscount() method. Closes #3 --- src/main/java/nerdschool/bar/Pub.java | 83 +++++++++++---------------- 1 file changed, 35 insertions(+), 48 deletions(-) diff --git a/src/main/java/nerdschool/bar/Pub.java b/src/main/java/nerdschool/bar/Pub.java index 527e474..3f32bbb 100644 --- a/src/main/java/nerdschool/bar/Pub.java +++ b/src/main/java/nerdschool/bar/Pub.java @@ -1,4 +1,4 @@ -package nerdschool.bar; +import java.util.Map; public class Pub { public static final String ONE_BEER = "hansa"; @@ -7,61 +7,48 @@ public class Pub { public static final String GT = "gt"; public static final String BACARDI_SPECIAL = "bacardi_special"; - public int computeCost(String drink, boolean student, int amount) { + private static final Map DRINK_PRICES = Map.of( + ONE_BEER, 74, + ONE_CIDER, 103, + A_PROPER_CIDER, 110 + ); + + private static final Map INGREDIENT_PRICES = Map.of( + "rum", 65, + "grenadine", 10, + "lime juice", 10, + "green stuff", 10, + "tonic water", 20, + "gin", 85 + ); - if (amount > 2 && (drink == GT || drink == BACARDI_SPECIAL)) { + public int computeCost(String drink, boolean student, int amount) { + if (amount > 2 && (drink.equals(GT) || drink.equals(BACARDI_SPECIAL))) { throw new RuntimeException("Too many drinks, max 2."); } - int price; - if (drink.equals(ONE_BEER)) { - price = 74; - } - else if (drink.equals(ONE_CIDER)) { - price = 103; - } - else if (drink.equals(A_PROPER_CIDER)) price = 110; - else if (drink.equals(GT)) { - price = ingredient6() + ingredient5() + ingredient4(); - } - else if (drink.equals(BACARDI_SPECIAL)) { - price = ingredient6()/2 + ingredient1() + ingredient2() + ingredient3(); - } - else { - throw new RuntimeException("No such drink exists"); - } - if (student && (drink == ONE_CIDER || drink == ONE_BEER || drink == A_PROPER_CIDER)) { - price = price - price/10; - } - return price*amount; - } - - //one unit of rum - private int ingredient1() { - return 65; - } - //one unit of grenadine - private int ingredient2() { - return 10; - } + int price = getDrinkPrice(drink); - //one unit of lime juice - private int ingredient3() { - return 10; - } - - //one unit of green stuff - private int ingredient4() { - return 10; + if (student && isEligibleForStudentDiscount(drink)) { + price -= price / 10; // 10% discount + } + return price * amount; } - //one unit of tonic water - private int ingredient5() { - return 20; + private int getDrinkPrice(String drink) { + if (DRINK_PRICES.containsKey(drink)) { + return DRINK_PRICES.get(drink); + } else if (drink.equals(GT)) { + return INGREDIENT_PRICES.get("gin") + INGREDIENT_PRICES.get("tonic water") + INGREDIENT_PRICES.get("green stuff"); + } else if (drink.equals(BACARDI_SPECIAL)) { + return (INGREDIENT_PRICES.get("gin") / 2) + INGREDIENT_PRICES.get("rum") + + INGREDIENT_PRICES.get("grenadine") + INGREDIENT_PRICES.get("lime juice"); + } else { + throw new RuntimeException("No such drink exists"); + } } - //one unit of gin - private int ingredient6() { - return 85; + private boolean isEligibleForStudentDiscount(String drink) { + return drink.equals(ONE_CIDER) || drink.equals(ONE_BEER) || drink.equals(A_PROPER_CIDER); } } From fce6e4cff9de296dd8e72f65ba7610cde4aafb77 Mon Sep 17 00:00:00 2001 From: Mykyta-Panchenko Date: Fri, 7 Feb 2025 11:52:08 +0200 Subject: [PATCH 2/2] Refactored Pub.java Description: Moved drink price calculation to getDrinkPrice() method. Moved ingredient prices to a Map for better readability. Replaced string comparisons using == with .equals() to prevent potential bugs. Extracted student discount logic into isEligibleForStudentDiscount() method. Closes #3 --- src/main/java/nerdschool/bar/Pub.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/nerdschool/bar/Pub.java b/src/main/java/nerdschool/bar/Pub.java index 3f32bbb..8ad3d0b 100644 --- a/src/main/java/nerdschool/bar/Pub.java +++ b/src/main/java/nerdschool/bar/Pub.java @@ -1,4 +1,4 @@ -import java.util.Map; +package nerdschool.bar; public class Pub { public static final String ONE_BEER = "hansa";