[클린코드] 14장 점진적인 개선

JUN·2024년 8월 19일
0

클린코드

목록 보기
13/14

14장 점진적인 개선

서론

명령줄 인수를 파싱하는 유틸리티 클래스 Args를 구현하는 과정에서 점진적으로 코드를 변경해나가는 것을 저자가 직접 보여준다.

Args 클래스 구현 과정

구현하고 싶은 것

자바는 커맨드 라인의 인수를 받는 명령행 함수를 사용할 수 있다. 만약 MyApp이라는 자바 코드를 해당 명령줄 함수와 함께 실행하고 싶다면:

java MyApp -l -p 8080 -d 3.14

이 명령행 인수 -l -p 8080 -d 3.14를 파싱하여:

  • l은 로깅 기능을 활성화할지 여부를 나타내는 boolean
  • p는 포트 번호를 나타내는 문자열
  • d는 거리 값을 나타내는 double

로 파싱하고 싶다.

구현 단계

우선 저자는 해당 요구사항을 만족시키기 위해 Boolean만 지원하는 Arg 클래스를 구현했다.

코드 개선

인수 유형을 추가하니 확실히 코드가 더러워졌다.

우리는 이럴 때 멈춰야 한다고 한다!! 멈추고 리팩토링 시작!

리팩토링 과정

  1. TDD 를 활용해 코드를 리팩터링 하는 동안 점검시킨다.
  2. 각 인수를 추상화하는 ArgumentMarshaler 클래스를 탄생시켰다.
  3. ArgsException 클래스를 만들어 Args 클래스에서 생긴 오류를 처리했다. → 예외/오류 처리 코드 분리

결론

그저 돌아가는 코드는 부족하다. 시간이 지날수록 나쁜 코드 개선 비용이 늘어난다. 그러므로 코드를 깔끔하고 단순하게 정리하자. 절대로 썩어가게 방치하면 안 된다.

배울 기법들

  • 테스트 주도 개발 (TDD): 테스트를 먼저 작성하고 코드를 구현하며, 테스트를 통과시키는 방식으로 개발을 진행한다.
  • 리팩터링: 기능을 추가하면서 코드를 정리하고 개선하는 과정을 통해 유지보수성을 높인다.
  • 추상화: 공통된 기능을 추상화하여 코드 중복을 줄이고, 코드의 가독성과 재사용성을 높인다.
  • 모듈화: 오류 처리 코드를 별도의 클래스로 분리하여 코드의 책임을 명확히 하고, 오류 처리 로직을 일관되게 관리한다.
profile
순간은 기록하고 반복은 단순화하자 🚀

0개의 댓글