내일배움캠프(112)
-
[내일배움캠프] 숫자 야구 게임 구현 - 리팩토링(2)
어제 Level03 요구사항을 반영하기 위해 작성한(커밋은 오늘 했지만...) 코드를 다시 한 번 확인하고 리팩토링 해보았다. 수정한 코드는 여기서 확인 가능한다. 1. 패키지명 수정 현재 패키지 구성을 다시 확인하면서 일부 패키지의 이름이 의도를 명확히 전달하지 못하는 것 같아 수정하였다. 아래는 수정 전의 패키지 상태이다. 패키지명을 왜 수정하게 됬는지 설명하기 앞서 현재 패키지 구성에 대해 설명하자면, 현재의 패키지는 'package' 경로를 통해 해당 클래스(또는 인터페이스)가 어떤 목적으로 작성된 것인지 유추할 수 있도록 구성되었다. 예를 들어 이번에 추가한 'GameRecorder' 인터페이스의 패키지 경로는 아래와 같다.package numberBaseball.domain.playRecord..
2024.09.21 -
[내일배움캠프] 숫자 야구 게임 구현 - 리팩토링(1)
현재 'Level01' 부터 'Level02' 까지의 요구사항을 반영하였는데, 코드를 한 번 다시 확인해보고 '리팩토링(refactoring)' 해 보았다. 수정된 코드는 여기서 확인이 가능하다. 1. application 수행 흐름 반영된 요구사항에 따르면 사용자가 게임을 '시작 - 종료' 할 때, application 은 아래와 같은 수행 흐름을 가지게 된다.프로그램 시작시작 메뉴 노출 : 사용자는 메뉴를 보고 게임을 시작 또는 종료 할 수 있음게임 시작 선택 : 게임이 시작되면 application 은 현재 게임의 '정답' 을 생성입력 : 사용자는 정답이라 생각하는 값을 입력, application 은 '정답' 과 '입력' 을 비교하고 결과를 사용자에게 알려줌정답 입력 : 사용자의 입력이 정답이면 ..
2024.09.20 -
[내일배움캠프] TIL - 24.09.19(목)
어제부로 피드백을 모두 반영했기에 오늘은 우선 피드백을 주신 튜터님을 찾아가 피드백 반영에 대한 확인(?) 을 받았다. 마지막에 튜터님으로 부터 "감동인데요?" 라는 말씀을 해주셔서 뿌듯했는데, 다른 관점(다른 개발자 시점)에서 프로젝트를 확인하고 이해한 뒤, 수정해 볼 수 있었기 때문에 너무 좋은 경험이었다고 생각한다. 이후에는 추석 전에 발제된 '숫자 야구' 프로젝트를 이어 진행했으며 Level01-02 의 모든 요구사항을 반영해 '기본 구현' 을 마쳤다. 내일은 오늘 작성한 코드를 다시 한 번 확인하고 수정하는 과정을 거친 다음 Level03 의 요구사항을 반영할 생각이다. 오늘 작성한 코드는 여기서 확인이 가능하다. ※ 참고 : 나는 TIL 작성 방식을 내가 학습하며 정리한 다른 게시글들과 하이..
2024.09.19 -
[내일배움캠프] TIL - 24.09.18(수)
짧지만 무사히 추석을 가족과 보내고 복귀하였다. 아직 연휴는 몇 일 남았기에 이 기간동안 우선 이전에 제출한 '계산기 구현' 과제의 피드백 사항을 'Calculator' 프로젝트에 반영해보고자 한다. 피드백 사항을 크게 분류하면 아래와 같고 해당 피드백을 어떻게 반영했는지는 링크를 통해 확인할 수 있다.네이밍 관련불필요한 연산 객체 (반복)생성 및 역할 분리예외 처리피드백을 반영한 코드 및 TIL 은 이번주 목요일에 캠프가 다시 시작된다. 이 날 피드백을 남겨주신 튜터님을 찾아가 피드백 반영에 대한 부분을 이야기해 볼 생각이다. ※ 참고 : 나는 TIL 작성 방식을 내가 학습하며 정리한 다른 게시글들과 하이퍼링크를 거는 방식으로 작성하였다. 학습한 내용에 하이퍼링크를 걸어두었으니 해당 링크를 통해 학습..
2024.09.18 -
[내일배움캠프] 계산기 구현 - 피드백 반영(3)
세 번째 피드백은 '0' 으로 피연산자를 나누는 연산에 대한 예외 처리와 '명확한 예외 처리' 에 대한 내용이었으며, 피드백을 반영한 코드는 여기서 확인할 수 있다. 1. 명확한 예외 처리 연산(입력 값)에 대한 유효성을 확인하는 'checkValidCalculation(String)' 메서드이다. 만약 유효하지 않다면 'BadInputException' 이 발생, 예외의 처리 책임은 메서드를 호출한 곳으로 넘긴다. 그래서 아래의 이미치처럼 발생한 예외를 'Level04.start()' 메서드에서 처리하도록 구현했다. 문제의 구현부인데, 'InputValidator.checkValidCalculation()' 에서 발생한 예외를 'catch' 를 통해 잘 처리한 듯 보이지만 'catch' 에 지정된 예외..
2024.09.18 -
[내일배움캠프] 계산기 구현 - 피드백 반영(2)
두 번째 피드백은 '불필요한 연산 객체 (반복)생성' 에 관한 내용이었다. 확실히 나의 불찰로 생긴 문제였기에 피드백을 적극 반영해 문제를 해결해 보았다. 피드백을 반영한 코드는 여기서 확인할 수 있다. 1. Level.02 계산기 피드백 내용을 정리하면 '불필요한 연산 객체' 를 계속 생성하는 것과 'Calculator' 클래스의 역할이 '입력 값을 연산' 하는 역할임에도 'Operation 인터페이스' 의 구현 클래스 객체를 매핑하는 역할도 수행하고 있다는 문제가 존재한다.1-1. 문제 파악 현재 Level02 계산기는 'Level02.start()' 메서드의 내부 로직이 반복되는 구조로 'Level02' 객체 생성시 'Calculator' 객체를 한 번 생성한 뒤 'start()' 메서드가 수행되..
2024.09.18