이번 포스팅 주제는 현재 진행중인 프로젝트 리팩터링 입니다.
리팩터링은 프로젝트 코드의 내부 동작은 그대로! 어떤 코드 외적인 요소들을 좀 더 가다듬는 작업입니다. 리팩터링의 주된 목적은 가독성, 유지보수성 등 코드의 품질을 높이는 것이고, 이를 통해 개발 생산성과 좀 더 견고하면서 유연한 제품을 만드는 것입니다!
리팩터링 전 코드
간단한 함수 설명을 드리면 해당 함수들의 기능은 서버에 특정 상황이 발생하면 클라이언트에 데이터를 전송하는 코드입니다.
여기 위에 함수 두개는 너무나도 중복되고 있습니다. 그 이유는 List에 요소가 서로 다른데 이 두개를 어떻게 하나로 묶어야 할지 그 당시에는 몰랐기 때문에 우선 저런식으로 코드를 작성한 것입니다.
문제점
저는 객체를 생성하는 부분이 가장 근본이 되는 문제라고 생각합니다.
서로 다른 두개의 객체가 분리되어 있기 때문에 AnomalyAlaram을 생성하는 메서드도 2개가 생겼습니다...
해결책
LogAnomaly, MetricAnomaly를 묶어주는 공통의 인스턴스를 생성하기만 하면 모든 문제가 해결됩니다!
리팩터링 시작
리팩터링을 하기 위해 사전 준비 작업이 있습니다.
- 인터페이스 - 두 개의 인스턴스를 하나로 묶기 위한 인터페이스 작성
- 와일드카드 - 와일드카드를 이용해 리스트 파라미터 작성
인터페이스
하나로 묶어주기
와일드카드
이런 식으로 해서 정적 팩토리 메서드를 하나로 묶어주고 활용할 수 있게 되었습니다!
최종 코드