Skip to content

Commit 8bb2feb

Browse files
committed
feat: naming improvement
1 parent 20a9f59 commit 8bb2feb

File tree

7 files changed

+79
-73
lines changed

7 files changed

+79
-73
lines changed

exercises/tiered_pricing/solutions/adrianliz/java/src/main/java/tv/codely/checkout/PriceRange.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

exercises/tiered_pricing/solutions/adrianliz/java/src/main/java/tv/codely/checkout/SubscriptionPrice.java

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package tv.codely.checkout;
2+
3+
public final class SubscriptionTier {
4+
5+
private final SubscriptionTierRange range;
6+
private final SubscriptionTierPrice price;
7+
8+
public SubscriptionTier(
9+
final SubscriptionTierRange range,
10+
final SubscriptionTierPrice price) {
11+
12+
this.range = range;
13+
this.price = price;
14+
}
15+
16+
public boolean isInRange(int numberOfSubscriptions) {
17+
return this.range.isSuitableFor(numberOfSubscriptions);
18+
}
19+
20+
public double unitPrice() {
21+
return price.unitPrice();
22+
}
23+
24+
public double getTotalPrice(int numberOfSubscriptions) {
25+
return unitPrice() * numberOfSubscriptions;
26+
}
27+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package tv.codely.checkout;
2+
3+
public final class SubscriptionTierPrice {
4+
5+
private final double value;
6+
7+
public SubscriptionTierPrice(double value) {
8+
this.value = value;
9+
}
10+
11+
public double unitPrice() {
12+
return value;
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package tv.codely.checkout;
22

3-
public final class SubscriptionRange {
3+
public final class SubscriptionTierRange {
44

55
private final int numberOfSubscriptionsFrom;
66
private final int numberOfSubscriptionsTo;
77

8-
public SubscriptionRange(int numberOfSubscriptionsFrom, int numberOfSubscriptionsTo) {
8+
public SubscriptionTierRange(int numberOfSubscriptionsFrom, int numberOfSubscriptionsTo) {
99
this.numberOfSubscriptionsFrom = numberOfSubscriptionsFrom;
1010
this.numberOfSubscriptionsTo = numberOfSubscriptionsTo;
1111
}
@@ -14,12 +14,4 @@ public boolean isSuitableFor(int numberOfSubscriptions) {
1414
return numberOfSubscriptions >= numberOfSubscriptionsFrom
1515
&& numberOfSubscriptions <= numberOfSubscriptionsTo;
1616
}
17-
18-
public int numberOfSubscriptionsFrom() {
19-
return numberOfSubscriptionsFrom;
20-
}
21-
22-
public int numberOfSubscriptionsTo() {
23-
return numberOfSubscriptionsTo;
24-
}
2517
}

exercises/tiered_pricing/solutions/adrianliz/java/src/main/java/tv/codely/checkout/TieredPricing.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,36 @@
44

55
public class TieredPricing {
66

7-
private final List<PriceRange> priceRanges;
7+
private final List<SubscriptionTier> subscriptionTiers;
88

9-
public TieredPricing(final List<PriceRange> priceRanges) {
10-
this.priceRanges = priceRanges;
9+
public TieredPricing(final List<SubscriptionTier> subscriptionTiers) {
10+
this.subscriptionTiers = subscriptionTiers;
1111
}
1212

1313
public TieredPricing() {
1414
this(List.of(
15-
new PriceRange(1, 2, 299),
16-
new PriceRange(3, 10, 239),
17-
new PriceRange(11, 25, 219),
18-
new PriceRange(26, 50, 199),
19-
new PriceRange(51, 100, 149)));
15+
new SubscriptionTier(
16+
new SubscriptionTierRange(1, 2),
17+
new SubscriptionTierPrice(299)),
18+
new SubscriptionTier(
19+
new SubscriptionTierRange(3, 10),
20+
new SubscriptionTierPrice(239)),
21+
new SubscriptionTier(
22+
new SubscriptionTierRange(11, 25),
23+
new SubscriptionTierPrice(219)),
24+
new SubscriptionTier(
25+
new SubscriptionTierRange(26, 50),
26+
new SubscriptionTierPrice(199)),
27+
new SubscriptionTier(
28+
new SubscriptionTierRange(51, 100),
29+
new SubscriptionTierPrice(149))));
2030
}
2131

2232
public double getTotalPrice(int subscriptions) {
23-
return priceRanges.stream().filter(priceRange -> priceRange.isInRange(subscriptions))
33+
return subscriptionTiers.stream()
34+
.filter(subscriptionTier -> subscriptionTier.isInRange(subscriptions))
2435
.findFirst()
25-
.map(priceRange -> priceRange.getTotalPrice(subscriptions))
36+
.map(subscriptionTier -> subscriptionTier.getTotalPrice(subscriptions))
2637
.orElse(0D);
2738
}
2839
}

exercises/tiered_pricing/solutions/adrianliz/java/src/test/java/tv/codely/checkout/TieredPricingShould.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,21 @@ void unit_test_example() {
1717
void return_total_price_based_on_number_of_subscriptions() {
1818
final var priceRanges =
1919
List.of(
20-
new PriceRange(new SubscriptionRange(1, 2), new SubscriptionPrice(299)),
21-
new PriceRange(new SubscriptionRange(3, 10), new SubscriptionPrice(239)),
22-
new PriceRange(new SubscriptionRange(11, 25), new SubscriptionPrice(219)),
23-
new PriceRange(new SubscriptionRange(26, 50), new SubscriptionPrice(199)),
24-
new PriceRange(new SubscriptionRange(51, 100), new SubscriptionPrice(149)));
20+
new SubscriptionTier(
21+
new SubscriptionTierRange(1, 2),
22+
new SubscriptionTierPrice(299)),
23+
new SubscriptionTier(
24+
new SubscriptionTierRange(3, 10),
25+
new SubscriptionTierPrice(239)),
26+
new SubscriptionTier(
27+
new SubscriptionTierRange(11, 25),
28+
new SubscriptionTierPrice(219)),
29+
new SubscriptionTier(
30+
new SubscriptionTierRange(26, 50),
31+
new SubscriptionTierPrice(199)),
32+
new SubscriptionTier(
33+
new SubscriptionTierRange(51, 100),
34+
new SubscriptionTierPrice(149)));
2535
final var tieredPricing = new TieredPricing(priceRanges);
2636
final var expectedPrice = priceRanges.get(1).unitPrice() * 3;
2737

0 commit comments

Comments
 (0)