피드로 돌아가기
Dev.toFrontend
원문 읽기
class 구조 리팩토링으로 Split View 에디터 코드 가독성 획기적 향상 달성함
Refactoring a JavaScript class
AI 요약
Context
기존 splitView 모듈은 for 메서드와 destroy 메서드를 가진 플랫 객체 구조임. 메서드 내부 로직이 복잡하게 얽혀 있어 코드 흐름 파악과 유지보수가 어려움. 에디터 동기화, 문서 길이 검증, 사용자 변경 감지 등의 로직이 한 메서드에 집중됨.
Technical Solution
- class 구조 도입: SplitViewClass를 정의하고 create 공개 메서드와 #createClone, #pair, #sync, #cannotSync, #createAnnotations 등의 private 메서드로 분리함
- 추상화 레벨별 메서드 정렬: create 메서드에서 createClone, pair 같은 하위 메서드를 호출하는 구조로 구성함
- 명명된 파라미터 활용: { from: ... }, { to: ... }, { with: ... } 패턴으로 의도 전달함
- Early return 패턴 적용: cannotSync 체크 시 즉시 반환하여 조건문 중첩 제거함
- WeakMap 활용: 에디터 페어링을 WeakMap으로 관리하여 가비지 컬렉션 자동 처리함
Impact
코드 라인 수는 70에서 71로 거의 동일함. 가독성과 코드 흐름 파악이 크게 개선됨. API는 그대로 유지되어 기존 호출 코드 수정 불필요함.
Key Takeaway
플랫 객체를 class로 전환하면 공개 API는 유지하면서 구현 세부사항을 private 메서드로 분리할 수 있음. 메서드를 추상화 레벨순으로 정렬하면 코드 흐름을 위에서 아래로 자연스럽게 읽을 수 있음.
실천 포인트
복잡한 로직을 가진 플랫 객체를 리팩토링할 때 class 문법의 private 메서드(#method)와 명명된 파라미터를 활용하면 가독성을 크게 개선할 수 있음. 기존 API는 유지하되 내부 구조를 추상화 레벨별로 구성하는 접근이 효과적임.