본문 바로가기
  • Let's study
회고/프로그래머스 데브코스

백엔드 데브코스 12기 63일차

by 코딩고수이고파 2026. 10. 13.

10월 12일부터 Kotlin으로 콘솔 명언 앱을 만들고 있다. 명언과 작가를 입력받는 프로그램에서 시작해 등록, 목록 조회, 삭제, 수정 기능을 구현했고, 13일에는 파일 저장과 검색 기능을 추가하고 테스트를 보강했다.

 

기능이 늘어나면서 역할을 나누기

12일에는 Main에서 시작한 코드를 App으로 옮기고, 명령어와 파라미터를 해석하는 Rq를 추가했다. 이후 Controller, Service, Repository로 역할을 나누면서 사용자 입력 처리와 데이터 관리를 분리했다.

 

13일에는 Repository를 인터페이스로 바꾸고 메모리 저장소와 파일 저장소를 구현했다. 서비스가 사용하는 공통 기능을 유지하면서 저장 방식을 교체하는 구조를 통해, 인터페이스가 실제로 어떤 상황에서 필요한지 이해할 수 있었다.

 

프로그램이 종료되어도 데이터가 남도록 만들기

메모리에 저장하던 명언을 JSON 파일로 기록하고, 다시 읽어 객체로 변환하도록 구현했다. 마지막으로 사용한 ID도 별도 파일에 저장해 다음 실행에서도 번호가 이어지도록 했다.

 

파일 저장은 데이터를 기록하는 것만으로 끝나지 않았다. 저장 폴더가 없으면 생성하고, 처음 실행해 ID 파일이 없는 상황도 처리해야 했다. 실행 중 데이터를 관리하는 것과 프로그램 종료 이후에도 데이터를 유지하는 것의 차이를 배울 수 있었다.

검색 기능에서는 명언 내용이나 작가를 기준으로 데이터를 찾도록 구현하며, 입력받은 검색 조건이 Controller와 Service를 거쳐 Repository에서 처리되는 흐름을 살펴봤다.

 

직접 확인하던 동작을 테스트로 남기기

등록, 목록, 삭제, 수정, 종료 동작을 테스트로 정리했다. 콘솔 입력을 문자열로 전달하고 출력 결과를 검증하면서, 직접 실행해 확인하던 과정을 코드로 남겼다. 파일 저장소에도 저장·조회·삭제와 마지막 ID 관리 테스트를 추가했다.

테스트마다 같은 조건에서 시작하도록 저장소를 초기화하고, 개발용과 테스트용 데이터 경로를 분리하는 설정도 만들었다. 기대한 결과를 확인하는 것뿐 아니라 테스트가 서로 영향을 주지 않도록 준비하는 과정도 중요하다는 점을 배웠다.

 

이번 실습에서는 기능을 추가하는 과정에서 코드의 역할 분리, 데이터 저장, 테스트가 어떻게 연결되는지 경험했다. 앞으로도 문법과 구조를 사용하는 데서 그치지 않고, 어떤 문제를 해결하기 위한 것인지 함께 생각하며 학습하고 싶다.

댓글