의존관계를 이용해 구조적 리팩토링 포인트 찾기
📄

의존관계를 이용해 구조적 리팩토링 포인트 찾기

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