본 글은 SOPT 30기 iOS파트 1차 세미나 과제를 하고 받은 코드 리뷰들을 다시 점검해 보는 리뷰입니다.
1. viewDidLoad() 내 직접적인 코드 작성 대신 함수 사용
<기존 코드>
override func viewDidLoad() {
super.viewDidLoad()
userNameLabel.text = userName
userNameLabel.font = .boldSystemFont(ofSize: 20)
subMessage.sizeToFit()
welcomeMessage1.text = "instagram에"
welcomeMessage1.font = .boldSystemFont(ofSize: 20)
welcomeMessage2.text = "오신 것을 환영합니다."
welcomeMessage2.font = .boldSystemFont(ofSize: 20)
subMessage.text = "언제든지 연락처 정보와 사용자 이름을 변경할 수 있습니다."
subMessage.sizeToFit()
signInDoneUIButton.backgroundColor = .systemBlue
signInDoneUIButton.setTitle("완료하기", for: .normal)
signInDoneUIButton.setTitleColor(.white, for: .normal)
...
기존에 위 코드처럼 view의 생명주기 함수인 viewDidLoad 함수 내에 필요한 코드들을 직접적으로 작성했다.
그러나 이는 코드들이 기능별로 분류되지 않아 보기 지저분하다.
< 수정 코드>
override func viewDidLoad() {
super.viewDidLoad()
configureUI()
setMessageLabelData()
// ..
}
private func configureUI() {
userNameLabel.font = .boldSystemFont(ofSize: 20)
// ...
}
private func setMessageLabelData() {
welcomeMessage1.text = "instagram에"
// ..
}
때문에 위 코드처럼 기존 코드들을 함수로 각각 구현하고 viewDidLoad에는 함수만 작성해주는 것이 훨씬 깔끔하고 나중에 리뷰하기도 좋을것 같다.
2. 더 이상 상속되지 않는 클래스에 대한 final 키워드 사용
<기존 코드>
class SignInViewController: UIViewController {
Swift에서는 클래스를 호출할때 Dynamic한 방법을 사용하는데 이는 성능을 떨어뜨리는 요소 중 하나다.
때문에 더 이상 상속되지 않는 클래스에 final 키워드를 붙여줌으로써 Dynamic -> Static한 방식으로 바꿔주어 성능을 향상 시킨다.
관련 자료: Swift Inheritance
< 수정 코드>
final class SignInViewController: UIViewController {
3. UIButton의 isSelected 프로퍼티, toggle(), 삼항연산자 사용
<기존 코드>
@IBAction func eyeIconButton(_ sender: Any) {
if(eyeIcon == true) {
passwordTextField.isSecureTextEntry = false
eyeIconUIButton.setImage(UIImage(named: "password shown eye icon"), for: .normal)
}else {
passwordTextField.isSecureTextEntry = true
eyeIconUIButton.setImage(UIImage(named: "password hidden eye icon"), for: .normal)
}
eyeIcon = !eyeIcon
}
1. UIButton 버튼이 선택된 상태임을 감지 할 수 있는 isSelected라는 인스턴스 프로퍼티가 있다.
해당 버튼을 선택시 true , 선택 해제시 false를 리턴하는 Bool타입으로 위의 코드를 아래와 같이 수정 할 수 있다.
< 수정 코드 1>
if sender.isSelected {
// true 인 경우 코드 작성
} else {
// false 인 경우 코드 작성
}
2. 기존 코드에서 버튼이 눌릴때마다 eyeIcon이라는 변수의 Bool값을 변경 해주기 위해 eyeIcon = !eyeIcon이라는 코드로 작성을 했는데, .toggle이라는 코드를 통해 자동으로 bool값을 true <-> false로 변경 해줄 수 있다.
< 수정 코드 2>
...
eyeIcon.toggle()
...
3. 기존 코드의 if else 문 대신에 삼항 연산자를 통해 if문을 좀 더 깔끔하게 구현해 줄 수 있다.
삼항 연산자 => ' 조건 ? true : false'
< 수정 코드 3>
passwordTextField.isSecureTextEntry = passwordCheckButton.isSelected ? false : true
'iOS 개발' 카테고리의 다른 글
[Swift] 네비게이션 바 아이템 간격조절 (0) | 2022.05.29 |
---|---|
[Swift] 클로저Closure 문법을 정리해보자! (0) | 2022.05.15 |
[Swift] 그릇 세팅하면서 배우는 테이블 뷰(Table View) (0) | 2022.05.01 |
[Swift] 카페 사장님이 Protocol 프로토콜로 Delegate 델리게이트 하는 법 (0) | 2022.04.25 |
iOS 개발 포스팅을 시작하며 (0) | 2022.04.14 |