처음 들어본 협업 관련 용어에 대해서 정리해봤다.
점유인증 vs 본인인증
출처 - 본인인증과 점유인증, 두 가지 방식의 특징과 차이
ICE 평가
의사결정 프레임 중 하나이고 빠르고 효과적인 것이 특징이다.
ICE (Impact Confidence Ease)
Design-Patterns-In-Swift라는 Swift 언어를 활용하여 디자인패턴을 설명해주는 오픈소스가 있다.
책임연쇄패턴 기존 예제
protocol Withdrawing {
func withdraw(amount: Int) -> Bool
}
final class MoneyPile: Withdrawing {
let value: Int
var quantity: Int
var next: Withdrawing?
init(value: Int, quantity: Int, next: Withdrawing?) {
self.value = value
self.quantity = quantity
self.next = next
}
func withdraw(amount: Int) -> Bool {
var amount = amount
func canTakeSomeBill(want: Int) -> Bool {
return (want / self.value) > 0
}
var quantity = self.quantity
while canTakeSomeBill(want: amount) {
if quantity == 0 {
break
}
amount -= self.value
quantity -= 1
}
guard amount > 0 else {
return true
}
if let next {
return next.withdraw(amount: amount)
}
return false
}
}
final class ATM: Withdrawing {
private var hundred: Withdrawing
private var fifty: Withdrawing
private var twenty: Withdrawing
private var ten: Withdrawing
private var startPile: Withdrawing {
return self.hundred
}
init(hundred: Withdrawing,
fifty: Withdrawing,
twenty: Withdrawing,
ten: Withdrawing) {
self.hundred = hundred
self.fifty = fifty
self.twenty = twenty
self.ten = ten
}
func withdraw(amount: Int) -> Bool {
return startPile.withdraw(amount: amount)
}
}
디자인패턴을 다시 확인해보기 위해 오랜만에 보는데 책임 연쇄(Chain of Responsibility) 예제에서 ATM이라는 객체가 확장성측면에서 부족하다고 느껴 프로퍼티를 배열로 받도록 수정했다.
바꾸고 나서 장점은 ATM 객체가 확장성이 훨씬 올라갔다고 생각한다.
ATM 객체가 크게 책임연쇄패턴의 목적과는 관계가 없지만 책임연쇄패턴의 장점 중 하나인 확장성이 있으므로 사용하는 객체도 확장성이 있다면 좋을 것 같아서 기여를 했다.
추가적으로, 과거 프로토타입패턴 기여한 내역이 있는데 현재 이메일과 달라서 오픈소스에서도 커밋내역을 변경하는 방법들을 찾아봤는데 git rebase, git-filter-repo, cherry-pick, format-path 모두 시도해보았지만 git rebase, git-filter-repo는 과거에 커밋에 영향을 줘서 오픈소스에는 적합하지 않은 것 같고 cherry-pick, format-path는 충돌파일이 많았다.
호기심에 여러 방법을 시도해보았지만 오픈소스에서는 변경하지 않는 것이 가장 적합한 것 같다.