개인과제(54)
-
[숫자 야구] 피드백 반영 - 메서드 복잡도 낮추기(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 -
[일정 관리 앱] API 테스트 - 일정 수정 및 삭제
Lv.3 요구사항을 반영해 프로젝트에 '일정 수정', '일정 삭제' 기능을 추가하였다. 추가한 기능이 제대로 동작하는지 확인하기 위해 진행한 API 테스트 결과들을 남겨본다. 이번에 기능을 추가하며 작성한 코드는 여기에서 확인할 수 있다. 1. 일정 수정 요구사항에서의 포인트는 사용자가 입력한 '비밀번호' 와 DB 에 저장된 일정의 '비밀번호' 가 같을 때만 수정이 되어야 하는 것이다. 물론 사용자가 지정한 'id' 에 해당하는 일정이 DB 에도 존재해야 한다. 일정 수정전의 schedule 테이블의 상태이다. '일정 수정' 후의 변화를 확인하고자 남겨두었다. 먼저 사용자가 정확한 '비밀번호' 를 입력했을 때이다. 수정할 내용이 잘 반영되었으며, 추가적으로 '수정' 작업을 진행했기에 'updateAt' ..
2024.09.30