상세 컨텐츠

본문 제목

2019.12. Let's Swift in 판교.

오프

by box-jeon 2019. 12. 22. 09:19

본문

Let's Swift라고 되어 있어서 Google I/O extended 같은 행사라고 생각했는데, 내용을 보니 그냥 이름만 빌려온 지역 모임이었습니다. 이러니저러니해도 평일 저녁에 '판교에서' 2시간이면 부담도 적고 빠질 이유가 없습니다. 선착순 티켓팅에 실패했지만, 금손 제드가 3장 구매에 성공했습니다. 

느낌적인 느낌을 찾아서... - 네이버웹툰 장수한

UIView.isHidden 이야기로 시작했습니다. '값이 있다면 보여줘'와 '값이 없다면 보여주지마'의 차이... 느낌적인 느낌일지 모르겠지만 보다 코드의 가독성을 높이기 위한 노력들을 소개해주셨습니다. 이러한 노력의 필요성에 대해 깊이 공감합니다. 비슷한 맥락에서 guard가 오히려 가독성을 해치는 것 아니냐는 의견도...

지저분한 Unwrapping 코드를 깔끔하게 정리해보자! - 네이버웹툰 김형규

- Non-optional / Optional 데이터를 분리.

- guard / if / coalescing unwrapping의 사용을 구분.

- collection 내의 optional을 map / flatMap으로 처리.

- 그리고 하나 더 있었는데... 기억이 안나네요.

레거시 프로젝트에 의존성 주입하기 - 전수열

'왜 개념만 알려주고 방법을 알려주지 않을까'라는 질문에서 시작됩니다.

테스트는 어렵다. → 테스트하기 좋게 짜여있지 않다. → Coupling이 강하다.

Composition Root란?

- 의존성 그래프가 만들어지는 곳. 프로그램의 진입점(AppDelegate)에서 프로그램 전체의 구조를 정의하고, 각 화면에서 사용되는 service라던가 이동할 viewController를 모두 주입 받습니다. 주입받는 viewController가 사용하는 service나 이동하게될 viewController가 있다면 또 주입하고, 주입하고, 주입합니다. https://github.com/devxoul/pure

 

devxoul/Pure

Pure DI in Swift. Contribute to devxoul/Pure development by creating an account on GitHub.

github.com

의존성 그래프를 AppDelegate에서부터 정의한다고 가정할 때, 레거시는 곧바로 의존성 그래프에 속하지 못할 것입니다. 곧장 의존성 주입을 도입하지 못하는 이유로 2가지가 있습니다.

1. 정적 인터페이스에 의존하는 경우. shared같은 static interface를 사용하는 경우입니다.
- shared를 바로 사용하지 말고, 생성자의 argument로 전달받습니다.
- 테스트에서 다른 객체를 주입하려면 protocol로 정의해야겠지만, 그건 필요해지면 그때 합시다.
- static function으로 구현되어 있는 경우라면, 타입을 생성자의 argument로 전달받습니다.

2. 인스턴스를 직접 생성하는 경우.
- 해당 인스턴스의 factory를 생성자의 argument로 전달받습니다.
- 복잡한 closure가 난무하게 되지 않을까요? → 적어도 외부에서 주입할 수 있게 되었습니다.
- 복잡해지면 Factory 클래스를 만듭니다.

두 해결방법의 공통점은 의존성이 외부에 위치한다는 점입니다. 덕분에 필요에 따라 원하는 개체를 주입할 수 있게 됩니다.

궁극의 목표: 모든 클래스가 의존성 그래프에 속해야 한다.
오늘의 목표: 어제보다 더 나은 코드를 작성한다.

3부 프로젝트 구성 이야기 - 카카오뱅크 안정민

증분빌드가 3분이상 걸린다면 정말 심각한 환경입니다. 프로젝트 내부를 Sub-Project로 나눠서 운영하는 방법 3번째 시리즈입니다. 모든 기능을 framework으로 분리하는 극단적인 방법을 소개해주셨습니다.

Sub-Project를 만들게 되면, 동일한 파일명/클래스 명을 사용할 수 있게 되는 장점이 있습니다. 또한 증분 빌드 시, 해당 프로젝트와 연관된 부분만 재빌드될 것이기 때문에 이론적으로 빌드 속도가 더 빨라진다고 합니다. 또한 각 framework은 필요에 따라 static/dynamic으로 지정합니다.

static framework과 dynamic framework의 차이점

http://minsone.github.io/ios/mac/ios-framework-part-1-static-framework-dynamic-framework

 

[iOS][Xcode] Framework Part 1 : Static Framework와 Dynamic Framework

서론 Xcode에서는 Framework 라는 것을 통해 모듈화 단위의 코드 및 리소스를 사용할 수 있습니다. 그리고 외부 소스를 가져다 사용할 때 Cocoapods, Carthage 같은 도구를 사용하거나 혹은 직접 git submodule을 이용하기도 합니다. 하지만 소스를 쉽게 사용하는 것 이상으로 많이 살펴보질 않았습니다. 어떻게 Framework가 구성이 되어 있고, 어떻게 동작을 하고, Static Framework와 Dynamic Framewo

minsone.github.io

'오프' 카테고리의 다른 글

2022.08. INFCON 2022  (0) 2022.08.30
19.07. Google I/O Extended @Suwon  (0) 2019.07.17
19.07. 모두의 TOY STORY : Side Project 어디까지 가봤니?  (0) 2019.07.15
19.03. let us: Go! Spring  (0) 2019.03.31

관련글 더보기

댓글 영역