GitHub - StyleShare/swift-style-guide: StyleShare에서 작성한 Swift 한국어 스타일 가이드

Code Convention

Mark 목록

함수 목록

가독성 측면을 높이기 위해서 각 함수의 역할을 나눠서 코딩을 하는게 좋은 방법이라고 생각합니다 그래서 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에 작성하기.**

}