Open kmh5038 opened 10 months ago
코딩에서 항상 중요시 여겨지는것중 클린코드
가 있습니다.
클린코드에서 가장 기본이 되고 중요한 것은 중복된 코드를 제거
하는것이다.
그 방법 중 가장 쉬운 방법은 메서드로 공통된 로직을 묶어서, 호출만 다른 시점에서 해주는것이다.
이런 방식을 Property에서는 수행 할 수 있도록 하는것이 Property wrapper이다.
Property Wrapper는 Swift 5.1에서 추가되었고, 특별한 기능을 갖는 속성을 정의하는데 사용된다.
그 기능을 갖게 함으로써 코드의 가독성을 높여준다. (쉽게 말해 변수의 기능을 확장
해준다)
struct Recteangle {
private var width: Int
private var height: Int
init(width: Int, height: Int) {
self.width = width
self.height = height
}
var limitedWidth: Int {
get { return min(width, 10) }
set { width = newValue }
var limitedHeigth: Int {
get { return min(height, 10) }
set { height = newValue }
}
@propertyWrapper struct LimitedValue {
pirvate var value: Int = 0
var wrappedValue: Int {
get { self.value }
set { value = min(10, newValue) }
}
}
struct Rectangle {
@LimitedValue var width: Int
@LimitedValue var height: Int
}
사용 전의 예시는 다른 변수를 생성할때마다 같은 코드를 반복해줘야한다. 그 과정 자체가 매우 비효율적이고 가독성이 떨어진다.
반면 사용 후의 예시는 다른 변수를 생성할때 @LimitedValue
붙여주고 변수를 생성하면 같은 속성을 가진 변수로 생성된다.
@Enviroment 에는 여러가지 환경 변수가 있는걸로 알고 있는데 조금만 알려주시면 감사하겠습니다 ㅎㅎ
사용시에 단점이 있다면 어떤게 있을까요? 예를 들어 @EnvironmentObject는 남용 시 데이터 의존성, 복잡성 문제를 야기해서 정말 필요할 때 써야한다고 알고있습니다. 어떨때 사용하면 적합할지 알고싶습니다.
SwiftUI 자주 사용되는 Property Wrapper 정리