티스토리 뷰

[ios] 제네릭을 이용해 코드 중복 제거하기


안녕하세요. 오늘은 제네릭을 이용해 코드의 중복을 제거해보았는데요. 제네릭이라는 문법은 자바를 공부할 때부터 익히 들어왔고 그 용도가 무엇인지 알고있었습니다. 하지만 예제가 아닌 실제 프로젝트에 적용시켜본 것은 이번이 처음이라 추후에 보다 적극적으로 활용할 수 있기위해 이렇게 글을 작성하게 되었습니다.


이번 포스팅은 제네릭에 대한 기본적인 지식이 요구됩니다. 제네릭에 대한 기본 문법과 내용은 추후에 따로 작성해보도록 하겠습니다.

프로젝트에서는 생각보다 많은 코드 중복을 겪게 됩니다. 메소드 단위로 묶어 코드의 중복을 피하기도 하지만 메소드로 묶는 것에도 한계가 존재합니다. 저는 그런 경우를 네트워크 통신을 할 때 많이 겪었습니다. 저의 프로젝트를 예로 들어 설명해보도록 하겠습니다.


먼저 저의 프로젝트에서는 서버로부터 신용/체크카드 리스트와 상점의 리스트를 받아오는 두 가지 요청 메소드가 존재했습니다. 저는 이를 다음과 같이 구현했었습니다.


위의 코드는 중복된 코드를 나타냅니다. 이 코드는 제네릭을 활용한다면 쉽게 중복된 코드를 제거할 수 있습니다.


제네릭에서 타입을 나타내는 T 를 메소드 명 뒤 <> 사이에 넣어주는 것이 제네릭 메소드의 문법입니다. 하지만 기본적으로 T 는 다른 프로토콜을 준수하고 있지 않기 때문에 <T: Decodable>처럼 준수해야하는 프로토콜을 명시해줍니다.


그리고 위의 메소드는 다음과 같이 호출할 수 있습니다.


위처럼 제네릭 메소드를 사용하기 위해서는 반드시 호출부에서 원하는 타입을 명시해주어야 합니다.


마무리

이렇게 네트워크 통신을 하여 서버로부터 데이터를 받아올 때 중복된 코드를 제네릭을 사용하여 제거해보았습니다. 사실 엄청 대단한 것은 이론으로만 알고있던 것을 실제로 사용해보게 되어 굉장히 흥미로워 이렇게 포스팅까지 이어진 것 같습니다. 다음 포스팅에서는 제네릭에 대한 기본 문법에 대해 알아보는 시간을 갖도록 하겠습니다. 감사합니다.


'Swift + iOS > iOS' 카테고리의 다른 글

[ios] Responder Chain and Touch Event  (0) 2018.06.21
[ios] Hit Testing in iOS  (0) 2018.06.13
[ios] Key-Value Observing in Swift4  (0) 2018.06.10
[ios] UIControl  (1) 2018.06.07
[ios] Self-Sizing Table View Cells  (0) 2018.06.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함