📄
의존관계를 이용해 구조적 리팩토링 포인트 찾기
- 안정성 지표를 기준으로 리팩터링 포인트를 찾을 수 있음
- I = FanOut / (FanOut + FanIn)
- 불안정성(Instability): 특정 코드 집합이 얼마나 불안정한가
- FanIn: 노드로 들어오는 간선 (이 모듈을 사용하는 디펜던시 개수)
- FanOut: 노드로부터 나가는 간선 (이 모듈이 사용하는 디펜던시 개수)
- 0에 가까울수록 안정, 1에 가까울수록 불안정
- FanOut 높고 FanIn 낮으면 I -> 1: 이 모듈이 사용하는 디펜던시 개수가 더 많다
- FanOut 낮고 FanIn 높으면 I -> 0: 이 모듈을 사용하는 디펜던시 개수가 더 많다
- 안정되었다 = 변경 어려우나 변경될 여지는 적음 (like util libs)
- 불안정하다 = 변경 쉬우나 변경될 여지 높음 (like pages)
- 0에 가까울수록 변경에 신중해야 함
- 모듈은 자신보다 안정적인 모듈을 사용하는 것이 이상적
- 또한 모듈 구현 의도대로 안정성이 나와야 이상적
- 이상적이지 못한 모듈은 리팩터링 대상으로 볼 수 있음
- 테스트 작성 시에도 이를 적용 가능
- 이상적 테스트 커버리지는 100%지만 현실적으로 어려움
- 반드시 필요한 테스트 코드에 대해 테스트를 진행하고자 할 때 이 지표를 활용할 수 있을 것