알림 관리 클래스인 AlertManager를 재사용 가능하게 리팩토링을 해야했다.
앱에서 알림을 자주 사용하다 보면, 알림을 관리하는 방식이 점차 복잡해진다.
한 곳에 알림 관련 로직을 집중시키는 것이 좋지만, 그렇게 하면 코드가 길어지고 반복되는 부분이 많아질 수 있다.
이를 해결하기 위해 AlertManager를 리팩토링하고, 다양한 알림을 처리할 수 있도록 확장해아한다.
기존의 알림 처리 방식에서는 여러 곳에서 UIAlertController를 직접 생성하고, 알림을 표시했다.
예를 들어 사용자가 작성한 내용을 제출할 때 비어 있는 필드를 확인하는 알림, 이름을 입력하는 알림, 이미지 개수 제한을 알려주는 알림 등 다양한 상황에 맞춰 알림을 표시해야 했다.
이 과정에서 중복 코드가 발생하고, 알림의 스타일이나 버튼 액션을 일일이 처리해야 하는 문제가 있었다.
이 문제를 해결하기 위해 AlertManager 클래스를 수정했는데
AlertManager는 모든 알림을 관리하는 클래스이다.
알림을 표시하는 메서드를 제공하고, 알림의 타이틀, 메시지, 버튼 등을 설정할 수 있다.
또 알림을 재사용 가능하게 만들기 위해, 기본적인 알림뿐만 아니라 특정 상황에 맞는 알림을 정의했다.
리팩토링 후, 알림을 표시하는 로직을 간결하게 만들 수 있었다.
예를 들어 기본적인 알림을 표시할 때는 showAlert
메서드를 사용하고, 특정 상황에 맞는 알림은 별도의 메서드를 사용하여 호출할 수 있다.
이런 방식으로 알림을 한 곳에서 관리하고, 코드의 중복을 줄였다.
일반적인 알림 표시: showAlert(title:message:actions:)
메서드를 사용하여 기본적인 알림을 표시할 수 있다.
이 메서드는 알림의 타이틀, 메시지, 버튼 액션을 매개변수로 받아서 처리한다.
특정 상황에 맞는 알림: 예를 들어 사용자가 이름을 입력해야 하는 경우에는 showNameInputAlert(completion:)
메서드를 호출한다.
이 메서드는 이름을 입력받는 알림을 표시하고, 입력된 이름을 검증한 후 콜백을 호출한다.
다른 뷰컨트롤러에 있던 이미 작성된 글에 대한 알림, 행복 기록이 비어 있을 경우의 알림, 이미지 개수 제한에 대한 알림 등을 알럿 매니저에 추가했다.
각 상황에 맞는 알림을 별도의 메서드로 정의하여, 코드의 가독성을 높이고 관리하기 쉬운 구조로 만들었다.
리팩토링을 통해 AlertManager는 다양한 알럿을 관리할 수 있는 클래스가 되었다.
코드 중복을 최소화하고, 알림을 재사용 가능하게 처리할 수 있게 됐고 또한 알림을 표시하는 방식이 간결해져서 코드의 가독성과 유지보수성이 좋아졌다.