시나리오 : SnapKit으로 코드베이스를 전향하면서 Then 프레임워크를 사용하면 편하다해서 써보기로 함
AS-IS
Swift의 기본문법으로
클로저를 통해서 인스턴스생성을 하려고하면 클로저 내부에서 self 프로퍼티 사용이 불가함으로
새로운 인스턴스를 생성해서 return 시켜줘야함
var someLabel:UILabel = {
//새로운 인스턴스를 생성하고 해당 인스턴스를 return
return #{새로운 인스턴스}
}()
또 안된다고하면 꼬-옥 해보고 싶어져서 해봄
역시나 인스턴스 멤버 'self'를 'CustomView' 유형에서 사용할 수 없다고 에러를 툭...던져주는
그런 연고로 이와같이 작성을 해야함.
var someLabel:UILabel = {
var nameLbl = UILabel()
nameLbl.text = "Then Potato"
nameLbl.textAlignment = .center
nameLbl.textColor = .blue
return nameLbl
}()
TO-BE
Then 프레임워크를 쓰면 가독성이 좋아지고, 직관적이고, 깔끔하다 라는 표현을 들었다.
하지만 "백문이 불여일타" 이니께 스스로가 그렇게 판단하기 위해 해봄
보다 간단하게 표현하기 위한 1차 작업 -> 스위프트는 타입추론이 가능함
var someLabel2 = UILabel().then { lbl in
lbl.text = "Then Potato"
lbl.textAlignment = .center
lbl.textColor = .green
}
보다 간단하게 표현하기 위한 2차 작업 -> shorthand arguments name 사용
var someLabel2 = UILabel().then {
$0.text = "Then Potato"
$0.textAlignment = .center
$0.textColor = .green
}
이렇게 2차 리터치? 작업까지 하니 깔끔해보이고 가독성도 좋아보이는 거 같음
마무리
AS-IS 코드와 TO-BE 코드를 비교해보면
주황색 박스 부분의 "인스턴스 생성 및 return" 하는 부분의 코드량이 줄어들고, Then 프레임워크 사용을 위한 파란박스로 표기된
부분이 추가가 됨
개인적으로 코드량이 조금 늘어나더라도 가독성을 더 중요시하게 생각하는 편임
Then 프레임워크를 사용한 첫 인상은 코드량도 줄고 가독성도 좋아지는 일석이조 너낌!
찐마무리는 역시 빌드하고 실행까지 해보는것으로 끝!
관련자료
GitHub :
https://github.com/PotatoArtie/Potato-iOS/tree/master/Labs/ThenPotato
[Swift] SwiftUI에서는 왜 뷰에 struct를 사용할까? (1) | 2022.02.19 |
---|---|
[Swift] 강제업데이트 앱버전 비교하기 (0) | 2022.02.17 |
[Swift] TextField UnderLine Animation (밑줄 그려지는 애니메이션)02- SnapKit (0) | 2022.02.10 |
[Swift] TextField UnderLine Animation (밑줄 그려지는 애니메이션)01- 스토리보드 (0) | 2022.02.09 |
[Swift]Code Snippets 사용하기 (Xcode 13버전에서 Color Literal) (0) | 2022.02.06 |
댓글 영역