0908
순환참조를 탐지해주는 룰
- eslint
- biome
그럼 해당 룰을 무조건 설정하는게 좋을까?
- 해당 기능을 사용하면 정적 린터가 모든 파일의 import문을 따라가면서 모듈 그래프를 그려가며 탐색하기에 계산 비용이 엄청 높다.
- 왜 계산 비용이 높을까?
- 시간 복잡도 때문일까?
- 그래프 구조를 탐색하는거니 DFS 또는 BFS 알고리즘으로 순환경로를 탐지할텐데, 그래프 구조를 인접 리스트로 사용한 경우 시간복잡도는 O(v+e)로 효율적이다.
- V = 노드 수 = 모듈 수
- E = 엣지 수 = import문 연결 수
txt
// Graph 구조 (예시)
{
'A.js': ['B.js', 'C.js'],
'B.js': ['C.js'],
'C.js': ['A.js']
}- 고로 시간 복잡도는 높은 계산 비용의 원인과는 직접적인 관계가 없는 것 같다.
- 그래서 진짜 영향을 주는 요소들은 아래 3가지라고 한다. (feat. 클로드)
- 파일 I/O 비용: 프로젝트의 모든 파일을 읽어야함
- 파싱 비용: 각 파일의 import/export 문을 분석해야됨
- 모듈 그래프 구축: 전체 의존성 관계를 메모리에 구성해야됨
- 고로 해당 룰을 설정하는 것도 좋지만, 미연에 fsd 구조를 잘 지켜서 순환참조를 방지하는 습관을 지니는 것이 더 좋은 것 같다. 또는 특정 디렉토리에서만 검사를 한다든가?