Skip to content

Commit

Permalink
โ™ป๏ธ [refactor] MatchingScoreCalculator static ๋ณ€๊ฒฝ
Browse files Browse the repository at this point in the history
  • Loading branch information
rimi3226 committed Feb 4, 2025
1 parent 812aced commit 93002d1
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
import com.gamegoo.gamegoo_v2.account.member.domain.Position;
import com.gamegoo.gamegoo_v2.account.member.domain.Tier;
import com.gamegoo.gamegoo_v2.account.member.domain.Mike;
import org.springframework.stereotype.Component;

@Component
public class MatchingScoreCalculator {

/**
Expand All @@ -17,8 +15,8 @@ public class MatchingScoreCalculator {
* @param mannerDifferenceMultiplier ๋งค๋„ˆ ์ ์ˆ˜ ๋ณ„ ๊ฐ€์ค‘์น˜ ๊ฐ’
* @return ์ตœ์ข… ๋งค๋„ˆ์ ์ˆ˜
*/
public int getMannerPriority(Integer otherManner, Integer myManner, int maxMannerPriority,
int mannerDifferenceMultiplier) {
public static int getMannerPriority(Integer otherManner, Integer myManner, int maxMannerPriority,
int mannerDifferenceMultiplier) {
int mannerDifference = Math.abs(myManner - otherManner);
return maxMannerPriority - mannerDifference * mannerDifferenceMultiplier;
}
Expand All @@ -34,8 +32,8 @@ public int getMannerPriority(Integer otherManner, Integer myManner, int maxManne
* @param tierMultiplier ํ‹ฐ์–ด ์ ์ˆ˜
* @return ๋žญํ‚น ์šฐ์„ ์ˆœ์œ„ ๊ฐ’
*/
public int getTierRankPriority(Tier myTier, Integer myRank, Tier otherTier, Integer otherRank,
int maxTierRankPriority, int tierMultiplier) {
public static int getTierRankPriority(Tier myTier, Integer myRank, Tier otherTier, Integer otherRank,
int maxTierRankPriority, int tierMultiplier) {
int myScore = getTierRankScore(myTier, myRank, tierMultiplier);
int otherScore = getTierRankScore(otherTier, otherRank, tierMultiplier);
int scoreDifference = Math.abs(myScore - otherScore);
Expand All @@ -51,7 +49,7 @@ public int getTierRankPriority(Tier myTier, Integer myRank, Tier otherTier, Inte
* @param tierMultiplier ํ‹ฐ์–ด ์ ์ˆ˜
* @return ๋žญํ‚น ์ ์ˆ˜
*/
private int getTierRankScore(Tier tier, int rank, int tierMultiplier) {
private static int getTierRankScore(Tier tier, int rank, int tierMultiplier) {
return tier.ordinal() * tierMultiplier - rank;
}

Expand All @@ -66,8 +64,8 @@ private int getTierRankScore(Tier tier, int rank, int tierMultiplier) {
* @param defaultPositionPriority ๋‚ฎ์€ ์ถ”๊ฐ€ ์ ์ˆ˜
* @return ํฌ์ง€์…˜ ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜
*/
public int getPositionPriority(Position myWantPosition, Position otherMainPosition, Position otherSubPosition,
int mainPositionPriority, int subPositionPriority, int defaultPositionPriority) {
public static int getPositionPriority(Position myWantPosition, Position otherMainPosition, Position otherSubPosition,
int mainPositionPriority, int subPositionPriority, int defaultPositionPriority) {
int priority = 0;

if (myWantPosition == otherMainPosition || myWantPosition == Position.ANY || otherMainPosition == Position.ANY) {
Expand All @@ -89,7 +87,7 @@ public int getPositionPriority(Position myWantPosition, Position otherMainPositi
* @param mikeMatchPriority ๋งˆ์ดํฌ ์ ์ˆ˜
* @return ๋งˆ์ดํฌ ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜
*/
public int getMikePriority(Mike myMike, Mike otherMike, int mikeMatchPriority) {
public static int getMikePriority(Mike myMike, Mike otherMike, int mikeMatchPriority) {
if (!myMike.equals(otherMike)) {
return 0;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
@RequiredArgsConstructor
public class MatchingStrategyProcessor {

private final MatchingScoreCalculator matchingScoreCalculator;

/**
* ์ •๋ฐ€๋งค์นญ ์šฐ์„ ์ˆœ์œ„ ๊ณ„์‚ฐ
*
Expand All @@ -18,7 +16,7 @@ public class MatchingStrategyProcessor {
* @return ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜
*/
public int calculatePrecisePriority(MatchingRecord myRecord, MatchingRecord otherRecord) {
return matchingScoreCalculator.getMannerPriority(
return MatchingScoreCalculator.getMannerPriority(
otherRecord.getMannerLevel(), myRecord.getMannerLevel(), 16, 4);
}

Expand All @@ -33,21 +31,21 @@ public int calculateFastPriority(MatchingRecord myRecord, MatchingRecord otherRe
int priority = 0;

// ๋งค๋„ˆ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getMannerPriority(
priority += MatchingScoreCalculator.getMannerPriority(
otherRecord.getMannerLevel(), myRecord.getMannerLevel(), 16, 4);

// TODO: ํ‹ฐ์–ด ๋ฐ ๋žญํ‚น ์ ์ˆ˜ ๊ณ„์‚ฐ
priority += matchingScoreCalculator.getTierRankPriority(myRecord.getSoloTier(), myRecord.getSoloRank(),
priority += MatchingScoreCalculator.getTierRankPriority(myRecord.getSoloTier(), myRecord.getSoloRank(),
otherRecord.getSoloTier(), otherRecord.getSoloRank(), 40, 4);

// ํฌ์ง€์…˜ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getPositionPriority(
priority += MatchingScoreCalculator.getPositionPriority(
myRecord.getWantPosition(), otherRecord.getMainPosition(), otherRecord.getSubPosition(), 3, 2, 1);
priority += matchingScoreCalculator.getPositionPriority(
priority += MatchingScoreCalculator.getPositionPriority(
otherRecord.getWantPosition(), myRecord.getMainPosition(), myRecord.getSubPosition(), 3, 2, 1);

// ๋งˆ์ดํฌ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getMikePriority(myRecord.getMike(), otherRecord.getMike(), 3);
priority += MatchingScoreCalculator.getMikePriority(myRecord.getMike(), otherRecord.getMike(), 3);

return priority;
}
Expand All @@ -63,22 +61,22 @@ public int calculateSoloPriority(MatchingRecord myRecord, MatchingRecord otherRe
int priority = 0;

// ๋งค๋„ˆ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getMannerPriority(
priority += MatchingScoreCalculator.getMannerPriority(
otherRecord.getMannerLevel(), myRecord.getMannerLevel(), 16, 4);

// ํ‹ฐ์–ด ๋ฐ ๋žญํ‚น ์ ์ˆ˜ ๊ณ„์‚ฐ
priority += matchingScoreCalculator.getTierRankPriority(
priority += MatchingScoreCalculator.getTierRankPriority(
myRecord.getSoloTier(), myRecord.getSoloRank(),
otherRecord.getSoloTier(), otherRecord.getSoloRank(), 40, 4);

// ํฌ์ง€์…˜ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getPositionPriority(
priority += MatchingScoreCalculator.getPositionPriority(
myRecord.getWantPosition(), otherRecord.getMainPosition(), otherRecord.getSubPosition(), 3, 2, 1);
priority += matchingScoreCalculator.getPositionPriority(
priority += MatchingScoreCalculator.getPositionPriority(
otherRecord.getWantPosition(), myRecord.getMainPosition(), myRecord.getSubPosition(), 3, 2, 1);

// ๋งˆ์ดํฌ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getMikePriority(myRecord.getMike(), otherRecord.getMike(), 5);
priority += MatchingScoreCalculator.getMikePriority(myRecord.getMike(), otherRecord.getMike(), 5);

return priority;
}
Expand All @@ -94,22 +92,22 @@ public int calculateFreePriority(MatchingRecord myRecord, MatchingRecord otherRe
int priority = 0;

// ๋งค๋„ˆ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getMannerPriority(
priority += MatchingScoreCalculator.getMannerPriority(
otherRecord.getMannerLevel(), myRecord.getMannerLevel(), 16, 4);

// ํ‹ฐ์–ด ๋ฐ ๋žญํ‚น ์ ์ˆ˜ ๊ณ„์‚ฐ
priority += matchingScoreCalculator.getTierRankPriority(
priority += MatchingScoreCalculator.getTierRankPriority(
myRecord.getFreeTier(), myRecord.getFreeRank(),
otherRecord.getFreeTier(), otherRecord.getFreeRank(), 40, 4);

// ํฌ์ง€์…˜ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getPositionPriority(
priority += MatchingScoreCalculator.getPositionPriority(
myRecord.getWantPosition(), otherRecord.getMainPosition(), otherRecord.getSubPosition(), 3, 2, 1);
priority += matchingScoreCalculator.getPositionPriority(
priority += MatchingScoreCalculator.getPositionPriority(
otherRecord.getWantPosition(), myRecord.getMainPosition(), myRecord.getSubPosition(), 3, 2, 1);

// ๋งˆ์ดํฌ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getMikePriority(myRecord.getMike(), otherRecord.getMike(), 3);
priority += MatchingScoreCalculator.getMikePriority(myRecord.getMike(), otherRecord.getMike(), 3);

return priority;
}
Expand All @@ -125,11 +123,11 @@ public int calculateAramPriority(MatchingRecord myRecord, MatchingRecord otherRe
int priority = 0;

// ๋งค๋„ˆ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getMannerPriority(
priority += MatchingScoreCalculator.getMannerPriority(
otherRecord.getMannerLevel(), myRecord.getMannerLevel(), 16, 4);

// ๋งˆ์ดํฌ ์šฐ์„ ์ˆœ์œ„
priority += matchingScoreCalculator.getMikePriority(myRecord.getMike(), otherRecord.getMike(), 3);
priority += MatchingScoreCalculator.getMikePriority(myRecord.getMike(), otherRecord.getMike(), 3);

return priority;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,80 +6,74 @@
import com.gamegoo.gamegoo_v2.matching.service.MatchingScoreCalculator;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;

import static org.assertj.core.api.Assertions.assertThat;

@ActiveProfiles("test")
@SpringBootTest
class MatchingScoreCalculatorTest {

@Autowired
MatchingScoreCalculator matchingScoreCalculator;

@Test
@DisplayName("๋งค๋„ˆ๋ ˆ๋ฒจ ์ ์ˆ˜ ๊ณ„์‚ฐ: ๋™์ผํ•œ ๋งค๋„ˆ ์ ์ˆ˜")
void testGetMannerPriority_SameManner() {
int result = matchingScoreCalculator.getMannerPriority(5, 5, 16, 4);
int result = MatchingScoreCalculator.getMannerPriority(5, 5, 16, 4);
assertThat(result).isEqualTo(16);
}

@Test
@DisplayName("๋งค๋„ˆ๋ ˆ๋ฒจ ์ ์ˆ˜ ๊ณ„์‚ฐ: ๋งค๋„ˆ ์ฐจ์ด๊ฐ€ ์žˆ์„ ๋•Œ")
void testGetMannerPriority_DifferentManner() {
int result = matchingScoreCalculator.getMannerPriority(5, 1, 16, 4);
int result = MatchingScoreCalculator.getMannerPriority(5, 1, 16, 4);
assertThat(result).isEqualTo(0);
}

@Test
@DisplayName("๋žญํ‚น ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜ ๊ณ„์‚ฐ: ๋™์ผํ•œ ํ‹ฐ์–ด ๋ฐ ๋žญํฌ")
void testGetTierRankPriority_SameTierAndRank() {
int result = matchingScoreCalculator.getTierRankPriority(Tier.GOLD, 4, Tier.GOLD, 4, 40, 4);
int result = MatchingScoreCalculator.getTierRankPriority(Tier.GOLD, 4, Tier.GOLD, 4, 40, 4);
assertThat(result).isEqualTo(40);
}

@Test
@DisplayName("๋žญํ‚น ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜ ๊ณ„์‚ฐ: ํ‹ฐ์–ด์™€ ๋žญํฌ ์ฐจ์ด")
void testGetTierRankPriority_DifferentTierAndRank() {
int result = matchingScoreCalculator.getTierRankPriority(Tier.GOLD, 1, Tier.SILVER, 2, 40, 4);
int result = MatchingScoreCalculator.getTierRankPriority(Tier.GOLD, 1, Tier.SILVER, 2, 40, 4);
assertThat(result).isEqualTo(35);
}

@Test
@DisplayName("ํฌ์ง€์…˜ ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜ ๊ณ„์‚ฐ: ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํฌ์ง€์…˜์ด ์ƒ๋Œ€๋ฐฉ ๋ถ€ํฌ์ง€์…˜")
void testGetPositionPriority_SameMainPosition() {
int result = matchingScoreCalculator.getPositionPriority(Position.TOP, Position.TOP, Position.MID, 3, 2, 1);
int result = MatchingScoreCalculator.getPositionPriority(Position.TOP, Position.TOP, Position.MID, 3, 2, 1);
assertThat(result).isEqualTo(3);
}

@Test
@DisplayName("ํฌ์ง€์…˜ ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜ ๊ณ„์‚ฐ: ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํฌ์ง€์…˜์ด ์ƒ๋Œ€๋ฐฉ ๋ถ€ ํฌ์ง€์…˜")
void testGetPositionPriority_SubPositionMatch() {
int result = matchingScoreCalculator.getPositionPriority(Position.MID, Position.TOP, Position.MID, 3, 2, 1);
int result = MatchingScoreCalculator.getPositionPriority(Position.MID, Position.TOP, Position.MID, 3, 2, 1);
assertThat(result).isEqualTo(2);
}

@Test
@DisplayName("ํฌ์ง€์…˜ ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜ ๊ณ„์‚ฐ: ANY ํฌ์ง€์…˜ ํฌํ•จ")
void testGetPositionPriority_AnyPosition() {
int result = matchingScoreCalculator.getPositionPriority(Position.ANY, Position.JUNGLE, Position.MID, 50, 30,
int result = MatchingScoreCalculator.getPositionPriority(Position.ANY, Position.JUNGLE, Position.MID, 50, 30,
10);
assertThat(result).isEqualTo(50);
}

@Test
@DisplayName("๋งˆ์ดํฌ ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜ ๊ณ„์‚ฐ: ๋™์ผํ•œ ๋งˆ์ดํฌ ์„ค์ •")
void testGetMikePriority_SameMike() {
int result = matchingScoreCalculator.getMikePriority(Mike.AVAILABLE, Mike.AVAILABLE, 2);
int result = MatchingScoreCalculator.getMikePriority(Mike.AVAILABLE, Mike.AVAILABLE, 2);
assertThat(result).isEqualTo(2);
}

@Test
@DisplayName("๋งˆ์ดํฌ ์šฐ์„ ์ˆœ์œ„ ์ ์ˆ˜ ๊ณ„์‚ฐ: ๋‹ค๋ฅธ ๋งˆ์ดํฌ ์„ค์ •")
void testGetMikePriority_DifferentMike() {
int result = matchingScoreCalculator.getMikePriority(Mike.AVAILABLE, Mike.UNAVAILABLE, 2);
int result = MatchingScoreCalculator.getMikePriority(Mike.AVAILABLE, Mike.UNAVAILABLE, 2);
assertThat(result).isEqualTo(0);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@
@SpringBootTest
class MatchingStrategyProcessorTest {

@Autowired
MatchingScoreCalculator matchingScoreCalculator;

@Autowired
MatchingStrategyProcessor matchingStrategyProcessor;

Expand Down Expand Up @@ -267,12 +264,12 @@ private int getPositionExpectedPriority(Member member1, Member member2) {
// ํฌ์ง€์…˜ expectedPriority ๊ณ„์‚ฐ
int positionPriority = 0;

positionPriority += matchingScoreCalculator.getPositionPriority(
positionPriority += MatchingScoreCalculator.getPositionPriority(
member1.getWantPosition(), member2.getMainPosition(), member2.getSubPosition(),
3, 2, 1
);

positionPriority += matchingScoreCalculator.getPositionPriority(
positionPriority += MatchingScoreCalculator.getPositionPriority(
member2.getWantPosition(), member1.getMainPosition(), member1.getSubPosition(),
3, 2, 1
);
Expand Down

0 comments on commit 93002d1

Please sign in to comment.