iOS 앱에서 프로토콜로 컴포넌트 간 결합을 낮춘 경험
iOS 앱 개발 스터디에서 Swift 프로토콜을 처음 썼을 때, 처음에는 그냥 인터페이스와 비슷한 것이라고 생각했습니다. 실제로 사용해 보니 클래스 상속이 아니라 프로토콜로 기능을 조합하는 패턴이 훨씬 유연하다는 것을 느꼈습니다. 네트워크 요청 레이어를 만들면서 Requestable 프로토콜을 정의하고 각 API 모델이 이를 준수하도록 하였습니다. 처음에는 associated type 개념이 헷갈려서 컴파일 에러를 한참 보았습니다. 이 설계 덕분에 목 객체로 바꿔서 테스트할 때 실제 네트워크 없이도 테스트가 가능했습니다. 프로토콜 지향이 테스트 가능한 설계와 연결된다는 것을 이때 처음 느꼈습니다.