우테코 프리코스 1차 - 숫자 야구 게임

우테코 프리코스 1차 과제


우테코 프리코스 과제를 받았다 !!

미리 자바지기님의 클린코드/리펙터링 & TDD 강의를 듣고 있었는데

마침 숫자 야구게임이 반가게 나와주었다…

정말 이메일에서 본 대로 인터넷에 떠다니는 문제들이 등장하였다…

사실은 미리 풀어보았지만..


사실은 미리 풀어보았지만 과제를 하면서 느낀점을 적어 본다

MVC 구조를 학습

웹 애플리케이션 뿐만 아니라 이러한 게임에서도 MVC 구조를 적용할 수 있다는 것을 깨달았다

핵심 도메인 영역에서 생성과 해당 도메인 핵심 로직을 작성한다

예를 들어 Ball과 Balls이다

Balls는 Ball만을 컬렉션으로 가지는 일급 컬렉션 클래스이다

입력을 받는 부분은 InputView, 출력을 하는 부분은 OutputView 등으로 표현될 수 있으면

이들을 처리하는 부분은 Controller에서 구현한다

테스트하기 어려운 부분을 가능한 구조로 변경

예를들어 현재 시간 혹은 랜덤 숫자가 비즈니스 로직에 개입하는 경우 테스트가 힘들어진다

그래서 애플리케이션에서 돌아가는 로직은 랜덤으로하고

테스트 코드는 고정하는 것이 좋다

이때 Starategy 패턴을 적용하여 객체를 주입하면 좋다

입력부분에 정규표현식을 활용

사용자가 값을 잘못 입력할 경우 예외처리를 해주어야 한다

이때 정규표현식을 활용하면 용이하게 처리할 수 있다

depth를 줄일때는 스트림을 이용한다

들여쓰기 깊이를 줄일 때는 스트림을 이용하면 용이하게 줄일 수 있고 가독성도 높아진다

for문은 쓰는 순간 부터 depth가 +1 이 된다

중복되는 부분을 제거할 떄는 HashSet 을 !

중복되는 부분에 대하여 체크하거나 제거할 때는 HashSet을 이용하면 굉장히 편하다 !

AngularJS commit conventions 을 알게 되었습니다

그 이전까지는 몰랐던 커밋 메세지에도 컨벤션…

이번 미션을 수행하면서 많이 연습해 보게 되었다.

처음에는 영어로된 문서를 보고 이게 도대체 무슨말일까 싶었다..

그러나 인텔리제이의 plugin으로 설치해서 사용해보니 무슨말인지 금새 느낌이 왔다

자주 사용하는 항목은 아래와 같다

  • feat: 기능 구현
  • refactor: 클린 코드를 위한 코드 리펙터링 등
  • test: 테스트 코드 작성
  • docs: READEME.md 등의 문서 관련 파일 수정
  • style: 공백을 추가/제거하거나 들여쓰기를 수정하는 등

자바 Convention을 익히는 계기

자바 컨벤션에 대해 더욱 더 신경쓰게 되었다

예를들어 stream 같은 문법은 메서드 체이닝을 지원해서 .map()으로 연결되는 메서드 등이 많은데

대게 이것은 한줄에 하나의 메서드를 입력하는 방식으로 포맷을 진행한다

gradle로 test 코드를 실행할 수 있다

gradle 명령어로 테스트 코드를 실행할 수 있다는 것을 알게 되었다

재가 출제자였으면 gradle 명령어로 문제를 제출한 사람들의 파일들을 일괄로 테스트할 수 있다고 상상할 수 있게 되었다

gradle로 테스트 통과여부 확인


맥(bash 등) : ./gradlew clean test
윈도우(cmd 등) : gradlew.bat clean test

테스트 통과시

image

테스트 실패시

image




© 2020.12. by 따라쟁이

Powered by philz