피드로 돌아가기
Dev.toBackend
원문 읽기
MVP 패턴과 FTXUI로 구현한 현대적 터미널 텍스트 에디터 설계
Building a Terminal Text Editor: The View (Part 3)
AI 요약
Context
터미널 환경에서 텍스트 에디터를 구현하며 UI 렌더링과 입력 처리의 복잡성 발생. Model과 Presenter의 로직이 View의 구현 세부 사항과 강하게 결합되는 구조적 위험 존재. 다양한 OS 및 라이브러리 확장성을 고려한 추상화 계층 필요.
Technical Solution
- C++20 표준 기반의 현대적 TUI 라이브러리인 FTXUI를 채택하여 ncurses 대비 최신 언어 사양 활용 및 컴포넌트 기반 UI 설계
- IView 추상 클래스를 도입하여 렌더링과 입력 루프를 인터페이스화하고 Presenter와의 의존성을 제거한 플러그인 구조 설계
- ViewState 구조체를 통해 가시 텍스트, 커서 위치, 상태바 정보(단어 수, 파일명, 수정 여부)를 정의하고 데이터 전달 계약을 명확히 함
- 내장 커서 부재 문제를 해결하기 위해 visibleText를 커서 전·후 문자열과 현재 커서 문자로 분리하여 렌더링하는 시뮬레이션 방식 구현
- FTXUI의 원시 키보드 이벤트를 Presenter가 이해하는 InputEvent 타입으로 변환하는 전용 번역 레이어 구축
Key Takeaway
관심사 분리를 위해 Model-View-Presenter 패턴을 적용하고 각 계층을 인터페이스 기반 계약으로 연결함으로써 구현체 변경 시 기존 로직을 수정하지 않는 유연한 아키텍처 확보.
실천 포인트
UI 라이브러리의 의존성을 제거하고 확장성을 확보하려면 View를 인터페이스로 추상화하고 상태 객체(ViewState)를 통해 데이터만 전달하는 수동적 뷰(Passive View) 전략을 적용할 것