Swift - 모듈화에 대한 고찰 (extension)

김태형·2023년 2월 22일
0

iOS

목록 보기
1/1
post-thumbnail

테스트 이후의 피드백

앞에서도 작성하였지만, '라이징 테스트'를 통해 인스타그램 어플을 클론해보았다. 물론 2주 만에 작업을 하는 것이기 때문에 모든 기능을 완성하지는 못했지만, 그래도 어느 정도의 기능과 뷰들은 구현하였다.
(궁금하신 분들은 인스타그램 클론을 통해 확인해보실 수 있습니다.)
테스트 기간 때는 사실 기능 구현에 급급하다 보니, 코드적인 부분에 대해서 신경 쓸 겨를이 없어 같은 기능을 하는 코드들을 복사 + 붙여넣기를 통해 구현을 했었다. 사실 이 부분에 대해서는 '조금 더 간결하게 작성할 수 있지 않을까'라는 생각을 하고 있었기 때문에 한 번 리마인드를 하고 가야겠다고 생각했다.

예를 들어 네비게이션 바의 '뒤로 가기'는 사실 매우 많은 뷰에서 사용되기 때문에 extenstion을 통해 관리를 하는 방식 등이 있을 것이다.
(물론 extension의 기능이 이러한 역할 이외에도 매우 많지만 우선은 이 역할에 대해서만 작성하도록 하겠습니다..)

따라서 이번 글에서는 extension을 통해 어떻게 모듈을 관리할 것이고, 효율적으로 사용할 지에 대한 생각을 작성해볼 예정입니다 !

모듈화 (상향식 개발)

만약 개인 프로젝트를 진행한다고 하였을 때는 사실 이러한 모듈화가 상대적으로 덜 필요할 수도 있다. 왜냐하면 본인 혼자 개발하게 된다면 모든 코드를 본인의 의도대로 설계하기 때문에 코드를 대충?짜도 이해할 수 있기 때문이다. 하지만 대부분의 경우에는 '협업'을 통해 진행되기 때문에, 타인의 코드를 보는 경우가 훨씬 많다. 이럴 때 이제 코드를 방대하고 조잡하게 작성해놓는다면, 서로가 불편할 것이고, 결국 코드가 매우 방대해질 것이다. (보일러플레이트 코드)
하지만 모듈화를 통해 상향식 개발 방식을 사용한다면, 모듈화된 컴포넌트들을 가져다 사용하면서 코드가 간결해지고(프로젝트의 경량화), 협업에 용이해질 것이다.

이러한 모듈화 방식은 여러 가지 장점을 가지고 있다고 생각합니다.

  1. 보일러플레이트 코드 방지
  2. 코드 및 구현에 있어서 복잡성이 낮아짐
  3. 효율적인 관리 및 성능 향상
  4. 모듈의 재사용 가능으로 개발과 유지보수가 용이
  5. 오류의 범위를 최소화

따라서 모듈화에 대해 인지하고 개발을 한다면, 처음엔 어려울 수도 있어도, 결국엔 더욱 효율적으로 개발을 할 수 있게 된다.


모듈화의 예시

우선 저는 이러한 방식으로 Extension이란 폴더에 각 컴포넌트들에 대한 파일들을 생성해놓았다.

다음은 extension UIViewController { ... } 안에 생성한 함수이다.
이 함수를 작성해놓게 되면 어떠한 ViewController에 대해서도 NavigationBack() 함수를 작성할 수 있게 되고, 작성을 하게 되면 저 함수를 언제든지 불러올 수 있는 효과를 가지고 있다.

주의할 점

사실 근데 모듈화를 할 때 조금 주의?할 점이 있다고 생각한다. 그것은 '정말로 최소 기능만으로 모듈을 만들었는가?'인 것 같다. 왜냐하면 사실 이 코드를 작성하기 전에 만든 코드가 있다.

위에 주석처리가 되어있지 않은 상태의 형식이었다. 처음에 코드를 만들 때 '취소랑 완료 버튼이 대부분 같이 붙어있으니깐 그냥 한 번에 처리하자!'였다. 그런데 뷰를 계속 만들다보니 '완료'버튼이 아닌 경우도 매우 많았고, 이러한 경우 때문에 기존에 만들어놨던 'back && 완료' 형식을 다시 수정하였고, 이는 또한 시간을 들이게 되는 요인이었다.



따라서 모듈화는 최소한의 기능으로 구현하고, 설계를 할 때 어떠한 기능들을 모듈화할 것인지를 인지하고 설계하는 것이 좋을 것 같다.

0개의 댓글