피드로 돌아가기
Building CLIAR — A simple drop-in Java class for parsing command-line arguments (Final part of 4)
Dev.toDev.to
Backend

220라인의 Zero-Dependency Java CLI 파서 설계 및 구현

Building CLIAR — A simple drop-in Java class for parsing command-line arguments (Final part of 4)

onebitwonder2026년 5월 17일6beginner

Context

외부 라이브러리 의존성을 배제하고 레거시 JVM 환경에서도 동작 가능한 경량 Command-line Argument Parser 필요성 대두. Reflection 기반 프레임워크의 오버헤드와 복잡성을 제거한 단순 Drop-in 클래스 구조 지향.

Technical Solution

  • Option 객체를 통한 Compile-time 선언 및 Runtime Validation 구조 설계
  • Reflection 없이 Type-specific Getter를 통한 데이터 타입 캐스팅 및 Default Value 처리 로직 구현
  • Option 내 getName() 메서드 중앙화를 통한 Short/Long Option 명칭 포맷팅 중복 제거
  • Positional Arguments의 Index 기반 접근 및 유효성 검증을 통한 유연한 인자 처리
  • StringBuilder 기반의 가변 길이 컬럼 정렬을 통한 자동 Help Message 생성 로직 구현
  • Option 객체 자체를 필드로 활용하여 상태 관리와 Argument 매핑을 일원화한 구조 채택

- 의존성 최소화가 필요한 레거시 시스템 대상의 경량 파서 설계 시 Reflection 제거 검토 - Type-safe한 값 추출을 위해 Getter 내부에 Expectation-Validation 로직 포함 여부 확인 - 사용자 편의성을 위한 Help Message 생성 시 최장 옵션 길이를 계산한 동적 정렬 적용

원문 읽기