현재 스터디 중인 기술 (iOS)...
POP/ Functional Programming/ Reactive Swift
1. POP (Protocol Orientied Programming)
아마 개발자를 시작한 이래 매료되었던 패러다임은 OOP였다.
재사용 가능하고 손쉬운 유지 보수를 위한 OOP방식과 여러 디자인 패턴은 매력적이었고 최근까지도 이를 익히고 사용하기 위해 노력해왔다. 하지만 Objective-C에서 Swift로 언어를 전환하며, POP 방식이 OOP방식보다 객체지향프로그래밍에 더 적합하다고 느껴 다시 POP방식으로 개발하려고 하고 있다.
실천:
- 상속을 사용하기 보다 해당 객체의 행동(역할) 파악하여 여러 프로토콜로 쪼개기
- 한 프로토콜에서는 하나의 책임/동작만 하도록 하기
- 객체를 직접 넣어주기보다 프로토콜 타입으로 넘겨주기
2. Reactive Swift
전통적으로 iOS는 동시성 프로그래밍을 처리하는데 뛰어나서 동시성 처리는 그렇게 장점으로 보이지는 않는다.
다만, 객체간의 통신 방법에 있어서 참 획기적이다 라고 생각된다. Rx에서는 이벤트를 Observable한 이벤트(프로토콜을 구현한)로 전송된다. 이벤트는 받아보는 인스턴스들에서 처리할 수 있으며 각 Observable을 취합하여 이벤트를 처리할 수도 있다.
이걸보며 참 획기적이다라고 느꼈다. 중간에 객체를 호출하는 것이 아니라, 데이터를 전달할 뿐이고, 최종 인스턴스에선 그걸 처리한다.
즉, 특정 클래스나 프로토콜에 비종속적으로 개발할 수 있으며 이것은 단위 테스트를 진행하기에도 참 좋은 것 아닌가.
Apple에서는 객체 간의 여러가지 통신 방법을 지원하고 있다. 가장 대표적인 Delegate부터 Observer, KVO, 그리고 직접 인스턴스나 클래스 메소드의 호출 등... 하지만 모두 특정 클래스에 종속적이거나, 특정상 상황을 트래킹하기는 어렵다. 또한 이것을 단위 테스트로 돌리기엔 또 난해한 부분이 있는데 이것을 해결할 수 있는 좋은 솔루션 같다.
혹시나 잘못 이해하고 있는건 아닌지 계속 봐야겠다.
3. FP (Functional Programming)
이 모든 것을 위한 FP...