[우아한테크코스 백엔드] 프리코스 1주차 회고 (숫자 야구)
2023. 10. 26. 15:09ㆍTIL
백엔드 개발자로의 전향을 마음먹고, 막연하게 강의를 듣고 코드를 따라 치면서 큰 고민 없이 공부를 해온 것 같다.
프리코스를 통해서 좀더 능동적으로 지식을 습득하고 고민해보는 시간을 가지고 싶다. 또한 열정적인 동료들 사이에서 나도 열정을 가지고 몰입하여 공부해 보고자 한다.
1. 미션 : 숫자 야구


2. 구현 과정
1) main 함수에 절차적으로 로직을 구현
2) MVC 구조를 떠올리며 적용이 가능한 부분은 Layer별로 나누어 구조화
- Application - Domain
서비스/컨트롤러의 역할을 모두 묶어 Application이라고 표현하였다
레포지토리의 역할과 도메인의 역할을 모두 Domain폴더에 구현하였다 - 기능에 따라 numbers / result 로 구분
numbers의 경우, application단에서 사용자로부터 입력을 받으면 numberRepository에 저장
application단에서 정답을 생성하면 마찬가지로 numberRepository에 저장
application단에서 정답과 사용자의 입력을 비교하여 볼, 스트라이크를 resultRepository에 저장
저장된 결과로부터 최종 result를 얻게 됨
3) 예외처리
- 사용자 입력에 대한 예외처리
세자리 수가 아닌 경우
1~9 범위 이탈한 경우
3. 다른사람 코드를 통해 깨달은 점!
1) 초기 설계
- 절차적으로 코드를 먼저 작성해보기 보다, 기능 단위로 구분 후 옆에 작성해보기

2) MVC 관련
- main문에서 로직 시작하지 않기
—> 모든 자바 프로그램이 실행되는 시작점이므로, 이 프로그램이 항상 이 것만을 하는 임베디드 프로그램이 아니라면, main문에 이런 절차들을 넣어두는 것은 잘못된 프로그램이라고 할 수 있겠다. 따라서 게임을 시작하는 것조차 클래스화하여 실행 - view 분리
—> input, output (output의 경우 인자 전달을 통해서 출력 가능) - controller 분리
—> 입력을 받고 처리, 결과 반환을 하는 점에서 controller를 따로 두어 관리 가능
3) 입출력
- 스트림 활용하기
4) 그 외
- 예외처리 클래스 따로 빼주기
- 싱글톤의 경우, 생성자는 private으로 숨겨줄 것
- enum을 통한 상태관리
- 변수명!!! 신경쓰기!
- 매직넘버 사용 지양
다른 사람들의 코드는 한줄의 코드에도 이유가 있고 의미가 담겨 있었다. 단순히 기능만 동작하는 코드가 아니라, 가독성과 성능을 모두 고려한 코드들을 보면서 감탄스러우면서도 내 코드가 참 부끄러웠다.
남은 3주간은 적어도 이유를 설명할 수 있는 그런 코드를 작성하고, 당당하게 리뷰받을 수 있는 코드가 되도록 하자!!!