[ 2024.09.23 TIL ] futsal-manager

박지영·2024년 9월 23일
0

Today I Learned

목록 보기
48/88
post-thumbnail

⚽ futsal-manager

들어가기 앞서 오늘은 모든 서비스 클래스를 싱글톤 패턴으로 재구현했고 테스트 위주로 진행하면서 모듈화 및 정상적으로 동작하도록 수정에 집중했다.

게임 매치 로직 수정

매치 로직을 구현하면서 그냥 기능이 굴러만 가게 구현했더니 중복되는 코드가 정말 많았다.

그래서 gameService 클래스에 메소드로 모듈화를 진행해보았다.

  • 팀 스탯 계산 메소드

이런 방식의 구조 분해 할당도 있어서 한 번 써보았다.

  • 팀 스타일 계산 메소드

  • 스탯 설정 메소드
 player.speed += amount;
 player.shootAccuracy += amount;
 player.shootPower += amount;
 player.defense += amount;
 player.stamina += amount;

스탯을 설정할 때 이런 식의 연산자만 다르고 비슷하고 반복되는 코드가 많아서 스탯을 설정하는 메소드를 구현했다.

사용례

Promise 문제

async await

반복코드들을 모듈화해서 서비스 클래스의 async 메소드로 구현하고 테스트를 진행하다보니 계속 문제가 생겼다.

함수로 존재하거나 기존 비즈니스 로직에 있던 코드들이 정상 작동하는 걸 확인하고 모듈화 후

테스트를 해보니 값이 이상하거나 promise 객체로 반환되는 일이 잦았다.

promise로 반환 되는 것을 보고 아 비동기 문제구나라고 이해를 했는데

그 부분은 분명히 prettier에서 await 형식이 아무런 영향도 주지 않는다는 부분이였다.

그래서 혹시하면서 await을 붙이고 테스트를 해보니 정상 작동했다.

async 메소드로 구현했으면 사용할 때 await을 일단 붙이는 버릇이 생겨버린 것 같다.

profile
신입 개발자

0개의 댓글