iOS/develop log

🚀 머플러 리팩토링 - 1. 리팩토링 계획 세우기 (레거시 코드 정리)

개발하는 감자입니다 2025. 1. 29. 20:59
728x90
 

머플러, 초심으로 돌아가는 설 연휴 프로젝트

머플러 앱, 잊혔지만 잊혀지지 않은 첫 프로젝트 약 8개월 전, iOS 앱스토어에 출시한 머플러는 UMC 동아리에서 진행했던 첫 번째 iOS 프로젝트였습니다. 당시 팀에 속한 디자이너분이 멋진 UI 디자

qkrrmsdud.tistory.com

 

레거시 코드, 어디서부터 정리해야 할까?

 

레거시 코드 정리는 모든 개발자에게 피할 수 없는 숙제다. 유지보수가 어려운 코드가 점점 쌓이면, 결국 기술 부채로 이어지고 프로젝트의 성장 가능성을 제한하게 된다.

 

이번에 나는 머플러 프로젝트의 레거시 코드를 정리하기로 결심했다. 8개월 전에 UMC 동아리에서 4명의 iOS 개발자가 함께 진행한 프로젝트로, 당시 앱스토어에 성공적으로 출시했지만 이후 관리되지 않은 상태였다. 이제 내가 혼자서 리팩토링을 진행해야 하는 상황이기에, 기존 코드 스타일을 분석하고 효과적인 개선 방향을 고민해보기로 했다.

 

레거시 코드 정리, 다른 개발자들은 어떻게 했을까?

 

무작정 코드를 정리하는 것은 위험할 수 있기 때문에, 먼저 다른 개발자들은 어떻게 레거시 코드를 정리했는지 찾아보았다.

 

📌 참고한 글: 개발자의 숙제 ‘레거시 코드’ 정리하는 법 | 요즘IT

 

이 글에서 가장 와닿았던 부분은 “작업 계획 세우기” 였다.

👉 레거시 코드 정리를 하기 전에 전체적인 코드 구조를 파악하고, 기능을 세분화하여 시간 할당을 해야 한다는 점이다.

 

현재 프로젝트의 문제점

 

코드 스타일 불일치

4명의 개발자가 함께 작업했지만, 코드 스타일이 통일되지 않아 하나의 팀이 작성한 코드처럼 보이지 않는다.

유지보수를 위해 코드 스타일을 통일하고 싶다.

 

MVVM과 RxSwift를 사용했지만, 아키텍처가 일관되지 않음

일부 코드는 MVC 패턴으로 작성되어 있고, 일부는 MVVM + RxSwift 구조를 따르고 있다.

특히, MVVM을 완전히 이해하지 못한 상태에서 작성된 코드들이 많아, 뷰 컨트롤러에 로직이 집중되어 있다.

MVC 패턴으로 작성된 코드를 모두 MVVM 패턴으로 변환할 예정이다.

 

도메인과 데이터 로직이 분리되지 않아 복잡한 구조

REST API를 활용한 네트워크 코드와 데이터 관리 코드가 섞여 있음

이를 CoreData를 활용한 로컬 데이터 관리 방식으로 전환하고,

추후 서버와의 연동이 필요할 경우에도 쉽게 확장할 수 있도록 클린 아키텍처를 도입할 계획이다.

 

불필요한 의존성 제거 및 리팩토링

현재 프로젝트에서는 불필요한 RxSwift 코드가 많아 이를 정리할 필요가 있다.

Combine 또는 기존 UIKit 방식으로 대체할 부분이 있는지 검토하려 한다.

 

리팩토링 진행 방향

🔹 Step 1: 코드 분석 및 정리 계획 수립

코드 전체 구조를 파악하고, 기능을 모듈 단위로 나누어 수정할 부분을 정리

아키텍처 개선 계획 수립 (MVC → MVVM, 데이터 분리, REST API → CoreData)

 

🔹 Step 2: 아키텍처 정리 및 기능 단위 리팩토링

뷰 컨트롤러의 비대해진 로직을 UseCase 및 ViewModel로 분리

CoreData를 활용한 데이터 저장 방식으로 변경

RxSwift 의존성을 줄이고, 필요한 곳에만 적용

 

🔹 Step 3: 코드 스타일 가이드 통일

기존 코드 스타일을 정리하고, 일관된 코드 스타일 적용

네이밍 컨벤션, 디렉토리 구조 정리

 

🔹 Step 4: 유지보수 및 최적화

클린 아키텍처를 적용하여 유지보수하기 좋은 구조로 변경

성능 최적화 및 불필요한 코드 제거

 

마무리하며

 

이 프로젝트는 내가 처음으로 참여한 iOS 프로젝트이자, 앱스토어에 출시한 첫 앱이다.

단순히 기능을 추가하는 것이 아니라, 오래된 코드를 유지보수 가능한 형태로 개선하는 과정 자체가 의미 있는 도전이라고 생각한다.

 

이 과정이 얼마나 걸릴지는 아직 모르겠지만, 최대한 효율적으로 진행하여 앱을 다시 살려보고 싶다.

지금은 설 연휴 동안 집중해서 리팩토링을 진행해볼 계획이다.

 

첫 iOS 프로젝트를 다시 살리는 과정, 앞으로도 꾸준히 기록해볼 예정이다. 

728x90
반응형