피드로 돌아가기
Dev.toBackend
원문 읽기
Dependency Inversion 기반 Driver Plugin 모델로 5개 언어 확장성 확보
Language-Agnostic Code Generation: The Driver Plugin Model
AI 요약
Context
다양한 언어별 프로젝트 구조와 테스트 프레임워크 차이로 인한 코드 복잡도 증가 상황. 기존의 하드코딩된 분기문 기반 구현 방식이 Open-Closed 원칙을 위반하며 신규 언어 추가 시 사이드 이펙트와 유지보수 비용을 발생시키는 한계 직면.
Technical Solution
- LanguageDriver 인터페이스 정의를 통한 언어별 분석 및 생성 로직의 추상화
- Registry 기반의 DetectProject 메커니즘을 통한 런타임 언어 자동 식별 구조 설계
- VCS stop markers(.git 등) 검증 로직을 통한 상위 디렉토리 오탐지 방지 및 프로젝트 루트 정밀 식별
- TestAdapter 계층을 추가하여 단일 언어 내 다양한 테스트 프레임워크(Jest, JUnit 등)의 문법 차이 격리
- domain ← drivers 구조의 의존성 역전(Dependency Inversion) 적용으로 패키지 간 순환 참조 원천 차단 및 컴파일 타임 강제성 부여
실천 포인트
1. 다형적 확장이 필요한 기능 설계 시 구체 클래스가 아닌 Interface 기반의 Plugin 모델 검토
2. 파일 시스템 기반 자동 탐지 로직 구현 시 상위 경로 탐색 범위 제한을 위한 Boundary Marker 설정 여부 확인
3. 프레임워크 수준의 세부 설정 차이는 Driver 내부에 별도의 Adapter 계층을 두어 관리하는 전략 고려
4. 패키지 간 의존성 방향을 단방향으로 강제하여 신규 기능 추가 시 기존 코드 수정이 필요 없는 구조인지 검증
태그