From 93002d14012fd84024e9745a06e3c1aae328e86a Mon Sep 17 00:00:00 2001 From: Rimi Date: Wed, 5 Feb 2025 00:32:02 +0900 Subject: [PATCH] =?UTF-8?q?:recycle:=20[refactor]=20MatchingScoreCalculato?= =?UTF-8?q?r=20static=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MatchingScoreCalculator.java | 18 ++++----- .../service/MatchingStrategyProcessor.java | 38 +++++++++---------- .../matching/MatchingScoreCalculatorTest.java | 24 +++++------- .../MatchingStrategyProcessorTest.java | 7 +--- 4 files changed, 37 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingScoreCalculator.java b/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingScoreCalculator.java index f245805..220d4e4 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingScoreCalculator.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingScoreCalculator.java @@ -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 { /** @@ -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; } @@ -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); @@ -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; } @@ -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) { @@ -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; } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingStrategyProcessor.java b/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingStrategyProcessor.java index 8879fc8..a006916 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingStrategyProcessor.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingStrategyProcessor.java @@ -8,8 +8,6 @@ @RequiredArgsConstructor public class MatchingStrategyProcessor { - private final MatchingScoreCalculator matchingScoreCalculator; - /** * 정밀매칭 우선순위 계산 * @@ -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); } @@ -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; } @@ -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; } @@ -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; } @@ -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; } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingScoreCalculatorTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingScoreCalculatorTest.java index 710779a..14d9acb 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingScoreCalculatorTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingScoreCalculatorTest.java @@ -6,65 +6,59 @@ 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); } @@ -72,14 +66,14 @@ void testGetPositionPriority_AnyPosition() { @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); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingStrategyProcessorTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingStrategyProcessorTest.java index d55d85a..81eee3f 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingStrategyProcessorTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingStrategyProcessorTest.java @@ -23,9 +23,6 @@ @SpringBootTest class MatchingStrategyProcessorTest { - @Autowired - MatchingScoreCalculator matchingScoreCalculator; - @Autowired MatchingStrategyProcessor matchingStrategyProcessor; @@ -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 );