minigrep 리팩터링 경계

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

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

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

main · 정책args 수집 · stderr · exit code
Config::build · 입력args → Result<Config, &str>
run · 실행file I/O → search → Result오류는 바깥으로 ↑
Config

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

build

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

run

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

main

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

리팩터링 순서

Result 반환
1
추출

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

2
분리

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

3
전파

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

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