독서일지/클린 코드

클린 코드 독서일지 - Day 27

Sadie Kim 2023. 12. 3. 22:51

점진적인 개선

Args 유틸리티를 구현하고 점진적으로 개선한 사례를 보인다.

  • Args는 명령행 인수의 구문 분석을 위한 유틸리티이며 두 개의 매개변수를 받는다.
  • 첫째 매개변수는 형식 또는 스키마를 지정하는 문자열이다.
  • 둘째 매개변수는 구문 분석을 할 명령행 인수 배열이다.
  • 형식 문자열이나 명령행 인수에 문제가 있을 경우 ArgsException이 발생한다.

Args 구현

  • 세부 로직을 이름을 붙여 별도의 모듈로 분리했고, 위에서 아래로 읽히도록 호출한 코드 아래에 모듈 코드를 배치했다.
  • 스키마를 parse하는 메서드와 인자값을 parse하는 메서드를 명시적으로 나누었고 각각 호출한다.
  • 인자를 다루는 로직은 인자의 타입별로 ArgumentMarshaler를 파생한 별개의 클래스를 만들어 처리한다.
    => 새로운 인수 유형을 추가하고자 할 때 기존 코드를 고칠 필요가 없으며 처리가 간편함 -> ArgumentMarshaler에서 새 클래스를 파생해 get함수를 추가하고 parseSchemaElement에 새 case를 추가하면 된다.
  • 오류가 났을 때 호출하는 ArgsException 또한 다른 클래스로 분리한다.