hufscheer / spectator-server

7 stars 0 forks source link

[FEAT] 라인업 주장으로 등록 및 취소 #204

Closed Jin409 closed 1 week ago

Jin409 commented 1 month ago

🌍 이슈 번호

📝 구현 내용

🍀 확인해야 할 부분

도메인 테스트

도메인 테스트를 어디서 해야 할지 모르겠어서 진입점인 GameTest 에 추가했는데 적절하다고 생각되는지 궁금합니다!

주장 등록 및 취소 한번에

public void changeCaptainStatus(LineupPlayer lineupPlayer) {
        Optional<LineupPlayer> captain = this.lineupPlayers.stream()
                .filter(LineupPlayer::isCaptain)
                .findAny();

        boolean playerExistsInTeam = this.lineupPlayers.stream()
                .anyMatch(lp -> lp.equals(lineupPlayer));

        if (captain.isPresent() && !captain.get().equals(lineupPlayer) && playerExistsInTeam) {
            throw new IllegalStateException("주장은 두 명 이상 등록할 수 없습니다.");
        }

        if (playerExistsInTeam) {
            lineupPlayer.changeCaptainStatus();
        }
    }

게임팀에 위와 같이 주장이 존재하고, 요청을 보낸 라인업 선수와는 일치하지 않고 (일치하는 경우에는 주장을 취소하는 요청일 것이기 때문에), 라인업 선수가 해당 팀이라면 예외를 던지도록 했습니다. 이 코드의 가독성을 조금 더 향상할 수 있는 방법이 없을까요?

Jin409 commented 1 week ago

api 분리해서 다시 할 것!