GitHub - StyleShare/swift-style-guide: StyleShare에서 작성한 Swift 한국어 스타일 가이드
가독성 측면을 높이기 위해서 각 함수의 역할을 나눠서 코딩을 하는게 좋은 방법이라고 생각합니다 그래서 ViewDidLoad에 들어가는 아래와 같은 함수들은 → VC 안에 작성하고 그 외의 함수들은 extension을 통해서 → VC 밖에 작성함으로써 가독성 측면을 높일 수 잇을거 같습니다!
import UIKit
import SnapKit
class ZoocViewController : UIViewController{
//MARK: - Properties
**데이터 프로퍼티를 작성 구간**
let zoocdata : [ZoocModel] = []
//MARK: - UI Components
**UIComponents 작성하는 구간**
let zoocLabel : UILabel = {
let label = UILabel()
return label
}()
//MARK: - Life Cycle
**생명주기 관련 함수 작성하는 구간**
override func viewDidLoad() {
super.viewDidLoad()
**viewDidLoad에는 함수만 존재하게 코드 짜기
target()
register()**
style()
hieararchy()
layout()
}
//MARK: - Custom Method
**직접 만든 함수들 작성하는 구간, ViewDidLoad 안에 써준 코드를 제외하고는 extension으로
따로 써주기**
private func target() {} // -> addTarget과 관련한 함수를 작성하는 구간
ex) button.addTarget(self, selector(buttonDidTap), .touchUpInside)
private func register() {} // -> register와 관련된 함수를 작성하는 구간
ex) 테이블뷰에 셀을 register하는 과정
private func delegate() {} // -> delegate를 설정하는 구간
ex) dataSource, flowLayout관련 delegate
private func style() {} // -> UI Component 속성에 관련 내용을 작성하는 구간
ex) button.do { blabla~~~}
private func hierarchy() {} // -> 뷰 계층구조와 관련된 내용을 작성하는 구간
ex) view.addSubViews(asdfasdfasf)
private func layout() {} // -> 레이아웃과 관련된 내용을 작성하는 구간
ex) button.snp.makeConstriant() ~~~
//MARK: - Action Method
**addTarget에 해당하는 함수 작성하는 구간
@objc zoocButtonDidTap(){
}**
}
//MARK: - UITableViewDelegate
extension IndiViewController: UITableViewDelegate{
**프로토콜 채택시 extension으로 빼고, 채택한 프로토콜 이름 MARK에 작성하기.**
}