Poltergeist

독일어로 Poltern(노크하다)과 Geist(영혼)라는 말의 합성어. ‘시끄러운 영혼’이라는 뜻으로, 인지할 수 없는 대상에 의해 물건이 움직이거나 소음이 발생하는 등 물리적 작용이 일어나는 일련의 현상을 이른다.

  • 불필요한 임시 객체나 클래스를 생성해, 애플리케이션의 복잡성을 높이는 안티 패턴입니다.
  • 이 객체는 주로 단순히 다른 객체의 메서드를 호출하거나 데이터를 전달하는 역할만 수행하며, 독립적으로 존재할 이유가 없습니다.
  • 너무 단순해서 객체로 만들 필요가 없는 클래스나 메서드.
  • 책임 없는 객체로, 전체 시스템에 기여하지 않음.

특징

  • 사용되지 않는 객체 : 생성되기는 하지만 코드에서 실제로 사용되지 않으
  • 메모리 소비 : 가시적인 이점 없이 메모리 리소스를 차지
  • 성능 오버헤드 : 불필요한 리소스 할당 및 살당 취소로 인해 성능이 저하될 수 있다.
  • 코드 복잡성 : 불필요한 객체와 종속석을 도입하여 코드베이스의 복잡성을 증가시킬 수 있다.

원인

  • 사용하지 않는 코드 : 실제로 사용하지 않는 객체나 컴포넌트를 실수로 만들 수 있다.
  • 불완전한 리팩토링 : 리팩토링 과정에서 더 이상 필요하지 않은 객체가 폴터가이스트로 남을 수 있다.
  • 임시 디버깅 코드 : 제거했어야 하는 임시 디버깅 코드나 로그 등
  • 복붙 : 코드 스니펫의 목적을 이해하지 않고 그냥 복붙

영향

  • 성능 저하
  • 메모리 사용량 증가
  • 코드 품질 저하
  • 디버깅 문제
  • 유지 보수 어려움

보수하기

  • 코드 리뷰
  • 정적 분석 도구
  • 단위 테스트
  • 리팩토링
  • 문서화