Skip to content

코드 컨벤션

Mingwan Choi edited this page Dec 1, 2022 · 2 revisions

라이브러리

  • First party, Third party 분리 후 알파벳 순으로

    import Combine
    import UIKit
    // 한 칸 띄고
    import RxSwift
    import SnapKit

주석

  • // MARK 다음줄은 한 칸 띄우기

  • // MARK 이후엔 모두 소문자

    // MARK: property
    
    // MARK: life cycle
    
    // MARK: func
    
    // MARK: selector
    
    // FIXME: 
  • // FIXME 사용 지향


변수

  • lazy var 를 사용해야하는 상황이 아니라면 let으로 선언

  • 외부에서 접근하는 경우가 아니라면 접근 제어 private 으로 설정

  • property 네이밍시 UILabel의 경우엔 끝에 Label, UIButton일 경우엔 Button 단어 추가

  • property 간에는 띄어쓰기 X

    // MARK: property
    
    private let invitedImageView: UIImageView = {
        let imageView = UIImageView(image: ImageLiterals.imgCodeBackground)
        imageView.isUserInteractionEnabled = true
        return imageView
    }()
    private lazy var closeButton: UIButton = {
        let button = UIButton()
        let action = UIAction { [weak self] _ in
            self?.dismiss(animated: true)
        }
        button.addAction(action, for: .touchUpInside)
        button.setImage(ImageLiterals.btnXmark, for: .normal)
        return button
    }()
  • @objc selector보단 UIAction 사용 지향

  • : 사용시엔 오른쪽에만 한 칸 띄우기

  • 줄임말 사용 지양

    let vc = HomeViewController() // X
    
    let viewController = HomeViewController() // O

  • !(강제언래핑) 사용 지양 → guard let if let

Extension

  • extension엔 하나의 protocol만 채택
// ❌
extension HomeViewController: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

// ✅
extension HomeViewController: UICollectionViewDelegate {}
extension HomeViewController: UICollectionViewDataSource {}
extension HomeViewController: UICollectionViewDelegateFlowLayout {}
Clone this wiki locally