-
Notifications
You must be signed in to change notification settings - Fork 1
코드 컨벤션
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엔 하나의 protocol만 채택
// ❌
extension HomeViewController: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
// ✅
extension HomeViewController: UICollectionViewDelegate {}
extension HomeViewController: UICollectionViewDataSource {}
extension HomeViewController: UICollectionViewDelegateFlowLayout {}
Maddori.Apple