모듈성과 에러 처리

minigrep 리팩터링 경계

커맨드 라인 예제를 유지보수 가능한 프로그램으로 만들기 위해 인수 파싱, 설정, 실행 로직, 오류 출력을 분리합니다.

관심사 분리 main은 인수 수집과 오류 종료를 담당하고, Config::build는 설정 생성, run은 실제 파일 읽기와 검색 실행을 맡습니다.

panic!으로 중단하는 대신 Result를 반환하면 호출자가 오류 메시지와 종료 코드를 제어할 수 있습니다.

Config

query와 file_path를 하나의 설정 값으로 묶어 함수 인수를 줄입니다.

build

인수 개수와 값 추출 실패를 Result로 표현합니다.

run

설정을 받아 프로그램의 실제 작업을 수행하고 I/O 오류를 전파합니다.

main

오류를 stderr에 출력하고 process::exit로 종료 상태를 분명히 합니다.

리팩터링 순서

Result 반환
1
추출

인수 파싱 코드를 Config::build로 옮깁니다.

2
분리

검색 실행 로직을 run 함수로 떼어 테스트 가능한 형태로 둡니다.

3
전파

실패는 Result로 올리고 main에서 사용자 메시지로 바꿉니다.

이 리팩터링은 코드를 예쁘게 나누는 일이 아니라, 실패 책임과 실행 책임을 각자 맞는 위치에 두는 작업입니다.