breaking change가 발생할 수 있다. Wrapping DTO를 만들어서 한번 감싸준다.
RequestScoreDTO와 같은 네이밍 X → ScoreRequest 와 같은 형태의 네이밍 전략을 사용한다. DTO와 같이 불필요한 내용은 제거하는 것이 좋음
생성자 인젝션인 경우 final 키워드 붙여주기
로직을 생각하며 네이밍 신경쓰기
예) 아래의 convertToGameScoreDTO(Long gameId) 는 gameId를 가지고 GameScoreDTO로 바로 변환하는게 아니다.
public GameScoreDTO convertToGameScoreDTO(Long gameId) {
Game game = gameRepository.findById(gameId).orElseThrow(GameNotFoundException::new);
Team homeTeam = teamRepository.findById(game.getHomeTeamId()).orElseThrow(TeamNotFoundException::new);
Team awayTeam = teamRepository.findById(game.getAwayTeamId()).orElseThrow(TeamNotFoundException::new);
return new GameScoreDTO(game, homeTeam, awayTeam);
}