본문 바로가기
TIL

[우아한테크코스 백엔드] 프리코스 1주차 회고 (숫자 야구)

by 소똥 2023. 10. 26.

백엔드 개발자로의 전향을 마음먹고, 막연하게 강의를 듣고 코드를 따라 치면서 큰 고민 없이 공부를 해온 것 같다.

프리코스를 통해서 좀더 능동적으로 지식을 습득하고 고민해보는 시간을 가지고 싶다. 또한 열정적인 동료들 사이에서 나도 열정을 가지고 몰입하여 공부해 보고자 한다.

 

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) 초기 설계

  • 절차적으로 코드를 먼저 작성해보기 보다, 기능 단위로 구분 후 옆에 작성해보기

숫자 야구 with 자바 기초 강의

2) MVC 관련

  • main문에서 로직 시작하지 않기
    —> 모든 자바 프로그램이 실행되는 시작점이므로, 이  프로그램이 항상 이 것만을 하는 임베디드 프로그램이 아니라면, main문에 이런 절차들을 넣어두는 것은 잘못된 프로그램이라고 할 수 있겠다. 따라서 게임을 시작하는 것조차 클래스화하여 실행
  • view 분리
    —> input, output (output의 경우 인자 전달을 통해서 출력 가능)
  • controller 분리
    —> 입력을 받고 처리, 결과 반환을 하는 점에서 controller를 따로 두어 관리 가능

3) 입출력

  • 스트림 활용하기

4) 그 외 

  • 예외처리 클래스 따로 빼주기
  • 싱글톤의 경우, 생성자는 private으로 숨겨줄 것
  • enum을 통한 상태관리
  • 변수명!!! 신경쓰기!
  • 매직넘버 사용 지양

 

 

다른 사람들의 코드는 한줄의 코드에도 이유가 있고 의미가 담겨 있었다. 단순히 기능만 동작하는 코드가 아니라, 가독성과 성능을 모두 고려한 코드들을 보면서 감탄스러우면서도 내 코드가 참 부끄러웠다.

남은 3주간은 적어도 이유를 설명할 수 있는 그런 코드를 작성하고, 당당하게 리뷰받을 수 있는 코드가 되도록 하자!!!