Skip to content

중복되는 컴포넌트의 커스텀 클래스화 및 재사용

MinwooJe edited this page Jun 9, 2024 · 1 revision

경험 공유 및 배운 점

iOS 개발 과정에서 중복되는 컴포넌트를 커스텀 클래스로 만들어 캡슐화하고 재사용하는 방법을 깨닫게 된 경험을 공유하고자 합니다. 이 과정에서 겪었던 문제점과 이를 해결하기 위해 사용한 방법, 그리고 그 결과 배운 점에 대해 자세히 기록해보겠습니다.

문제 상황

개발을 하다 보니 위와 같이 디자인에서 배경화면, 버튼 같은 중복되는 컴포넌트들이 자주 등장했습니다. 이러한 중복된 코드를 여러 파일에 작성하다 보니, 디자인 수정이 발생할 때마다 많은 시간이 소요되었고, 실수로 수정이 누락되는 경우도 있었습니다.

고민

해결책이 있을 것 같았지만, 검색 키워드도 떠오르지 않아 혼자 조금 더 고민을 하게 되었습니다. 그러던 중 객체지향 프로그래밍 수업시간에 배운 캡슐화 개념이 떠올랐습니다. 이를 통해 중복된 코드를 하나의 파일로 모아 관리할 수 있겠다고 생각했습니다.

캡슐화란?

캡슐화는 객체의 속성(데이터)와 행위(메서드)를 하나로 묶고 실제 구현 내용 일부를 외부에 감추어 은닉하는 것 입니다. 또한 외부에서는 객체의 속성과 행동을 통제하는 방법을 제공하는 것 입> 니다.

캡슐화의 장점

  1. 유지보수 용이 :

    • 단일 수정 포인트 : 관련 코드를 하나의 클래스에 작성하므로 수정 시 하나의 파일만 수정하여 모든 인스턴스에 수정사항을 반영시킬 수 있습니다. 따라서 유지보수를 더 쉽게 만들어 줍니다.
    • 버그 감소 : 위와 같은 맥락으로 중복된 코드가 분산되어 있을 때 발생할 수 있는 실수나 누락을 줄여줍니다. 하나의 캡슐화된 클래스에서 모든 변경 사항을 관리하기 때문에 일관된 동작을 보장할 수 있습니다.
  2. 재사용성 향상 :

    • 모듈화 : 자주 사용되는 기능이나 UI 컴포넌트들을 모듈화하여 여러 곳에서 쉽게 재사용할 수 있습니다. 이를 통해 코드의 중복을 줄여 복잡성을 낮추고, 개발 시간을 단축할 수 있습니다.
    • 유연성 : 커스텀 클래스를 통해 다양한 상황에 맞게 컴포넌트를 확장하거나 수정할 수 있습니다.
      예시) 위의 디자인에서 상단의 하트 아이콘과 배경 이미지를 결합하여 BackgroundView 라는 커스텀 클래스를 생성하였습니다. 이때, 생성자에 하트 아이콘의 이미지 이름을 받도록 하였습니다. 따라서 인스턴스 생성 시 하트 아이콘의 이름만 변경하여, 회원가입 단계가 진행될수록 차오르는 하트 아이콘들을 구현하였습니다.
  3. 코드의 가독성 향상 :

    • 명확한 구조 : 캡슐화를 하면 프로젝트의 구조가 명확해집니다. 각 클래스가 명확한 책임을 가지므로, 협업 시 코드 이해 및 수정에 도움이 됩니다.
    • 간결한 코드 : 반복되는 코드를 줄이고, 각 기능을 명확히 분리하여 코드를 더 간결하게 작성할 수 있습니다.

캡슐화의 단점

  1. 코드의 복잡도 증가 :
    • 외부에서 객체를 변경하기 위해 추가적인 인터페이스를 작성해야 할 수도 있습니다.
    • 또한, 객체의 내부 동작이 숨겨져있기 때문에 이해하는데 추가적인 시간이 들 수 있습니다.

UIKit에서의 UIImageView, UIButton 등 컴포넌트의 구현이 모두 클래스로 이루어져 있다는 것을 깨닫고, 이를 상속받아 커스텀 클래스로 만들 수 있겠다고 생각하였습니다. 이후 중복되는 컴포넌트들을 커스텀 클래스로 만들어 하나의 파일에 재사용 할 수 있도록 리팩토링을 진행해 캡슐화를 구현하였습니다.

느낀점

객체지향 프로그래밍 수업시간에서 이론을 배우고 간단한 예제 코드만 작성했을 때는 객체지향의 개념들이 와닿지 않았습니다. 이번 기회를 통해 객체지향 프로그래밍의 캡슐화 개념을 실제 프로젝트에 적용해보면서 그 중요성과 장점을 실감할 수 있었습니다. 특히 캡슐화는 중복된 코드를 줄이고 유지보수를 용이하게 만드는 것을 깨달았습니다. 앞으로도 SOLID 원칙을 준수하며, 재사용 가능한 깨끗한 코드를 작성하기 위해 고민할 예정입니다!