우테코 프리코스 4주차 회고 [다리 건너기]

코몽·2022년 11월 20일
2

WOOTECO

목록 보기
4/4

우테코 프리코스 4주차

4주차는 다리 건너기 게임을 제작하는 것이다.
이번 미션은 도메인 로직과 UI 로직을 클래스로 분리하여 제공되었다.
그리고 UI 로직이 담긴 클래스를 도메인 로직이 담긴 클래스에서 Import하여
사용하지 말라는 규칙도 있어서 어떻게 분리하고 어떻게 가져와서 쓸지
고민하였던 지난번 과제보다는 수월했다고 할 수 있겠다.


느낀 점

1. 상수화

이번에도 상수화를 하고 freeze 하였다. 어디까지 상수화를 해야하는지는
아직도 미지수이기는 하나 그래도 남들 코드 참고하여 대략적으로 하고 있다.

현 우테코에는 어느정도 오랜 경력을 가진 사람들이 있는 것 같다.
코드를 보면 적어도 1년 정도 근무를 한게 아닐까 할 정도로 클래스 분리,
상수 분리, MVC 패턴 적용, 변수명, 함수명 등 이 일관화 되어있다.


2. 테스트 케이스도 꼼꼼히 읽어야 한다.

항상 우테코 측에서 제공한 테스트 케이스를 한 번에 통과했는데
이번에는 뭔가 이상하게 자꾸 오류가 났다. 그 이유를 한참동안 살펴보니
우테코 측에서 제공한 테스트 케이스에서 랜덤 숫자 값을 문자열로 주입하고 있었던 것이다.

나는 당연히 숫자형이 들어올거라고 생각했는데 그 이유는 본 코드에서 랜덤 숫자를
우테코 측에서 제공한 랜덤 숫자 생성 라이브러리에서 가져오는 것이고
그 라이브러리 함수의 리턴 값이 숫자이기 때문에 우테코 측에서 제공한 테스트 케이스에서도
자연스레 숫자를 주입 시킬 것이라 생각했기 때문이다.
이번일을 통해 테스트 케이스 코드도 꼼꼼하게 읽어봐야 한다는 것을 깨달았다.

3. 제약 조건

이번 미션은 제약 조건이 생각보다 많았다.
특히 함수 10줄 미만과 파라미터 3개이하 조건은 충족시키기 상당히 까다로웠다.
게다가 11줄로 끝나고 더 이상 줄일 수 없는 경우가 많아 함수로 추출해야 하는데
그럴려면 또 파라미터가 4개가 필요하였다.

이 또한 방지하기 위해 함수를 더 나누다 보면 일부분만 다르고 나머지는 중복되는
함수들이 생겨나 마음에 들지 않았다.

10줄 및 3개 제한사항이 실무에서 컨벤션인지는 모르겠지만
15줄 및 4개 제한이 적당한 듯 싶다.
아니면 내 함수 추출 실력이 형편 없거나.
사실 후자가 더 확률이 높다.

4. 테스트 가능한 코드의 기준이란?

테스트 가능한 코드만 테스트 케이스를 작성한다라는 기준이 있었다.
여기서 테스트 가능한 코드의 기준이란 무엇일까?
일단 UI 로직은 테스트를 하지 않고 도메인 로직만 테스트 하라는 기준이 있었다.

근데 대부분의 도메인 로직이 UI로 입력을 받아야 동작이 가능한 코드들이 많다.
그래서 사용자 입력 값을 제스트에서 흉내내서 받아오면
그게 입 출력 테스트 하는게 아닌가?라는 생각이 들어 사용자 입력이 필요하지 않은
코드들과 입력 값 에지 케이스 검증 코드들만 테스트하였다.

특히 클래스 필드를 설정하는 도메인 로직이 많은데 프로그램 동작상 해당 클래스 필드를 getter로 가져올 일이 없어 getter가 없기 때문에 단지 테스트 코드만을 위해
getter를 만드는 것은 지양해야 하기에 그냥 테스트하지 않았다.
이 부분 또한 좀 더 공부가 필요하다.


결론

  • 이제 우테코 마지막이 끝났다.
  • 우테코 프리코스를 통해 배운 것들이 많지만 그 중 가장 큰 것은 공부 방향이다.
  • 현재 알골 코테에만 집중하고 있는데 실무적인 것들도 병행해 하루 빨리 취업해야 겠다.

총합

  • 기능 구현 목록 작성
  • 기능 별로 분리하여 함수 구현
  • 기능 별로 커밋 메시지 작성
  • 파일 분리 및 상수 분리
  • 동일 유형의 기능끼리 묶어 클래스화
  • 사용자 입력 값 조건식을 최대한 정규표현식으로 구현
  • eslint, prettier 등 초기 설정
  • EOL 확인
  • 조건식, 고정 값, 출력문, 에러 메시지 등 상수로 선언
  • 상수가 많을 시 하나의 클래스로 선언 후 deepFreeze
  • 도메인 로직과 UI 로직 분리
  • 도메인 로직들에 대한 테스트 케이스 작성
  • 함수 길이 15줄 이하, 파라미터 3개 이하 제약 준수

Github: 4주차 미션 다리 건너기

profile
프론트엔드 웹 개발자

0개의 댓글