Swift의 독특하고 진취적인 특성으로 보다 생산적이고 가독성이 높은 코드를 작성할 수 있습니다. 타입 시스템이나 불변성(immutability) 등 Jacob Schwartz는 그가 좋아하는 Swift의 특성에 촛점을 맞춰 이 언어가 자신의 앱 코드베이스에 얼마나 기여했는지 말합니다. 다른 언어에 비해 Swift가 얼마나 쉽고 재미있는지 알아보세요.
제가 일하는 Glint라는 스타트업에서 저는 Swift를 사용해 개발하며, Objective-C나 C++와 비교해서 제 작업과 코드에 큰 영향을 미친 Swift의 4가지 특성에 대해 말해보고자 합니다.
스트롱 타입 시스템 (1:37)
훌륭한 타입 시스템은 코드를 읽는 동안 생각해야 할 로드를 줄여주고 코드가 더욱 명확하게 느껴지도록 합니다. 예를 들어 아래 Objective-C 딕셔너리는 key와 value로 아무 타입, 심지어 nil을 넣을 수도 있습니다.
@property (strong, nonatomic) NSMutableDictionary *selectedFilters;
그러나 Swift는 정의에서부터 스트링을 스트링 배열로 바꾸는 딕셔너리임을 명시합니다.
var selectedFilters = [String: [String]]()
객체의 클래스를 체크할 필요가 없고 타입 시스템으로 앱 전체의 논리적 흐름을 통제할 수 있습니다.
불변성 (1:51)
C++에서는 const를 계속 덧붙인 아래 선언들이 똑같이 불변의 ivar를 나타냅니다. 너무 복잡해서 끔찍하게 느껴지죠.
class Puter {
void compute(obj *ptr);
void compute(const Obj *ptr);
void compute(Obj * const ptr);
void compute(const Obj * const ptr);
void compute(const Obj * const ptr) const;
};
Objective-C에서라면 끔찍하게 느껴지는 정도가 아니라 그냥 끔찍함 그 자체입니다. mutable과 immutable 버전의 스트링과 배열 등등을 직접 다뤄야 합니다.
Swift에서는 이를 쉽게 선언할 수 있습니다. 변수나 프로퍼티 선언에서 var
나 let
중에 하나를 고르기만 하면 끝입니다.
var dateString = formatter.stringFromDate(date)
// vs
let dateString = formatter.stringFromDate(date)
프로퍼티 (3:29)
이 코드가 엉망진창이긴 하지만 Swift의 쉽고 강력한 프로퍼티의 힘을 느껴볼 수 있을 겁니다.
var responseRate: Double? {
didSet {
let percent = min(100, max(0, Int((responseRate ?? 0)* 100)))
let baseString = NSLocalizedString("$0 ResponseRate", comment: "PulseTabResponseRate")
let percentString = "\(percent)%"
middleLabel.text = baseString.stringByReplacingOccurrencesOfString("$0", withString: percentString)
}
}
Swift 공식 문서를 처음 보면서 저는 프로퍼티를 문법 설탕 정도로 생각했습니다. 그러나 실제 프로그래밍을 해보니 프로퍼티는 코드를 보다 강력하고 단순하게 설계할 수 있도록 돕고 있었습니다. 뷰 컨트롤러에서 어떤 설문의 응답 비율을 더블 형식으로 받는 setter를 만들려면 더블(double)을 배치할 때 사용자가 볼 수 있는 스트링을 포맷하면 그만이었습니다. 이 방식으로 뷰 컨트롤러에 쉽게 데이터 바인딩을 할 수 있었죠.
훌륭한 커뮤니티 (4:25)
Swift meetup과 정보 뉴스레터 등 학습과 문제 해결을 돕는 훌륭한 온라인 자원들이 있어 이미 학습 환경이 형성돼 있습니다. 이런 환경 덕분에 코드 작성이 쉬워지고 더 즐거워지죠.
그러나 예전 iOS 버전을 새 Swift 버전에서 지원하지 않고, 개발도구가 불안정하며, 랜덤 링커 에러 등 아직 몇몇 문제가 남아 있지만 새 버전 배포를 통해 지속해서 개선되고 있습니다. Swift의 이런 4가지 특성이, 저를 더욱 즐겁게 좀 더 집약적이고 명확하게 코딩할 수 있게 하고, 다른 언어를 사용할 때보다 생산적일 수 있게 하는 원동력입니다.
컨텐츠에 대하여
이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.