명령줄 인수를 파싱하는 유틸리티 클래스 Args
를 구현하는 과정에서 점진적으로 코드를 변경해나가는 것을 저자가 직접 보여준다.
자바는 커맨드 라인의 인수를 받는 명령행 함수를 사용할 수 있다. 만약 MyApp이라는 자바 코드를 해당 명령줄 함수와 함께 실행하고 싶다면:
java MyApp -l -p 8080 -d 3.14
이 명령행 인수 -l -p 8080 -d 3.14
를 파싱하여:
로 파싱하고 싶다.
우선 저자는 해당 요구사항을 만족시키기 위해 Boolean만 지원하는 Arg 클래스를 구현했다.
인수 유형을 추가하니 확실히 코드가 더러워졌다.
우리는 이럴 때 멈춰야 한다고 한다!! 멈추고 리팩토링 시작!
ArgumentMarshaler
클래스를 탄생시켰다.ArgsException
클래스를 만들어 Args 클래스에서 생긴 오류를 처리했다. → 예외/오류 처리 코드 분리
그저 돌아가는 코드는 부족하다. 시간이 지날수록 나쁜 코드 개선 비용이 늘어난다. 그러므로 코드를 깔끔하고 단순하게 정리하자. 절대로 썩어가게 방치하면 안 된다.