내일배움캠프(114)
-
[숫자 야구] 피드백 반영 - 메서드 복잡도 낮추기(3)
피드백 내용 중 빠진 것이 있어 추가로 반영하면 게시글을 작성해본다. 저번에 이어서 'NumbersBaseballApp.start()' 메서드의 복잡도를 낮추기 위해 아래와 같이 프로젝트를 일부 수정하였다. 수정된 코드는 여기서 확인이 가능하다. 1. GameRecorderImpl 기존의 코드를 확인해보면 'GameRecorder' 객체에 저장되어 있는 플레이 기록을 'getGameRecords()' 메서드로 반환 받아 'start()' 메서드에서 요소를 꺼내 출력을 하고 있다. 하지만 이러한 행위는 게임 기록을 다루는 'GameRecorder' 객체에서 하는 것이 더 자연스럽다고 생각했다. 그래서 기존의 'getGameRecords()' 메서드를 'printGameRecords()' 메서드로 아래와 같..
2024.10.07 -
[숫자 야구] 피드백 반영 - 메서드 복잡도 낮추기(2)
피드백 사항 두 번째는 현재 'NumbersBaseballApp' 클래스에 존재하는 'playGame()' 메서드 로직의 복잡도 문제와 '불필요한 상태 저장' 에 대한 문제였다. 다시 기존의 코드를 확인해 보니 두 문제는 연관되어 있어 이렇게 함께 피드백을 반영하게 되었다. '불필요한 상태 저장' 을 했기에 '저장된 상태' 를 사용하는 'playGame' 메서드의 로직 또한 덩달아 복잡해진 것이 라 판단했다. 피드백 반영후 주석을 제거해 메서드 복잡도가 줄어들었는지 확인했다. 피드백이 반영된 코드는 여기서 확인이 가능하다. 1. CorrectAnswerGeneratorImpl 먼저 이렇게 생각해봤다. 'CorrectAnswerGenerator' 객체는 정답을 생성해주는 역할을 한다. 그런데 이 객체가 생..
2024.10.05 -
[숫자 야구] 피드백 반영 - 메서드 복잡도 낮추기(1)
피드백 사항 첫 번째는 현재 'NumbersBaseballApp' 클래스에 존재하는 'start()' 메서드 로직의 복잡도 문제였다. 실제로 작성해둔 코드를 다시 보니 만약 주석처리한 내용을 없앤다면 알아보기 힘들 정도로 각 메서드의 로직이 복잡하였다. 그래서 이번에는 이 복잡도 문제를 해결해 보고자 한다. 또한 피드백을 반영하며 수정한 부분에 주석을 제거해 반영 후 로직의 복잡도 문제가 나아졌는지 확인했다. 피드백을 반영한 코드는 여기서 확인이 가능하다. 'start()' 메서드는 '사용자' 의 메뉴 선택에 따른 수행 로직을 가지고 있다. '시작 메뉴' 를 보여주고 메뉴 번호를 입력 받아 메뉴 번호에 해당하는 로직을 수행한다. 그리고 'boolean' 을 반환해 게임을 재시작 여부를 'Main.main..
2024.10.05 -
[일정 관리 앱] 요구사항 반영 후 API 테스트
과제에 명시된 모든 요구사항을 반영 후 아래와 같이 구현한 기능에 대한 API 테스트를 진행해 보았다. 1. 일정 생성 '일정 생성' 요청 시 일정 생성에 필요한 '할 일(본문)', '작성자 이름', '작성자 이메일', '비밀번호' 정보들을 Http 메세지 본문(Request boy) 에 담아 요청을 하도록 구현했다. '유효한 요청 값' 들이 전달될 경우 일정을 DB 에 저장하며, 저장(생성)한 일정의 '아이디(id), 할 일(body), 작성자 이름(authorName), 일정 작성일(createAt), 일정 수정일(updateAt)' 정보를 반환해 준다. 이 때의 HttpStatus 는 '201 Created' 이다. '유효하지 않은 요청 값(들)' 이 전달될 경우는 아래와 같다. 'body, pas..
2024.10.04 -
[일정 관리 앱] Level 4 요구사항 정리, DB 세팅
'필수 기능' 에 대한 예외를 처리했으니 이번에는 '도전 기능' 의 'Lv.4 요구사항' 을 반영해보려 한다. 해당 요구사항은 이미 정리를 한 번 했지만 생각할 것이 많아 해당 게시글에서 다시 한 번 정리한 뒤 요구사항을 프로젝트에 반영해 보고자 작성하게 되었다. 1. 요구사항 정리 현재 '필수 기능' 요구사항을 반영한 프로젝트의 경우 'schedule' 테이블에서 '작성자명(author)' 만으로는 이게 누가 작성한 것인지 명확하게 확인을 할 수 없다. 요구사항에서는 '동명인' 문제를 예시로 들어주었는데, 다른 사용자가 같은 작성자명을 사용할 경우 앞서 말한 문제가 발생한다. 물론 이런 문제를 해결하기 위해서는 각 사용자별로 '사용자 정보(우리가 흔히 말하는 계정)' 를 저장해두고 사용자 정보와 요청 ..
2024.10.02 -
[일정 관리 앱] 예외 처리 적용 및 API 테스트
일단 '필수 기능' 에 대한 요구사항을 모두 반영해 구현을 하였지만 아직 해결해야 할 것이 있다. 바로 'Exception Handling(예외 처리)' 에 대한 부분인데, 요구사항에는 명시되어있지 않지만 프로젝트를 구현하면서 필요하다 생각하는 예외에 대한 부분을 처리해볼 생각이다. 이번 내용을 구현한 코드는 여기서 확인할 수 있다. 1. 요청 값이 유효하지 않은 경우 요구사항에는 '할 일' 에 몇 글자를 적을 수 있게 혹은 '작성자 이름' 은 몇 글자까지 입력 받을 수 있도록 같은 내용이 명시 되어있지 않다. 하지만 나의 경우 테이블 생성시 적절한 크기를 할당하고자 'text' 타입이 아닌 'varChar' 타입을 사용해 컬럼을 생성했다. 'varChar' 타입을 사용하다보니 자연스레 '최대 크기' 에..
2024.10.01