협업 코드 회고

Jaby·2024년 4월 8일
1

SwiftBasic

목록 보기
20/20
post-thumbnail

난리났다.

    override func viewDidLoad() {
        super.viewDidLoad()
        // 그라데이션을 통해 하단으로 갈수록 어둡게 처리
        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = view.bounds
        gradientLayer.colors = [UIColor.clear.cgColor, UIColor.black.withAlphaComponent(0.4).cgColor] // 그라데이션 색상 설정
        gradientLayer.locations = [0.7, 1.0] // 그라데이션의 위치 조정
        view.layer.addSublayer(gradientLayer)
        //titleLabel 폰트 설정
        titleLabel.font = UIFont(name: "OAGothic-ExtraBold", size: 34)
        titleLabel.textColor = UIColor(red: 1, green: 0.334, blue: 0.466, alpha: 1)
        switch selectedIndex{
        case 0:
            titleLabel.text = "Ice Cream"
        case 1:
            titleLabel.text = "Cake"
        case 2:
            titleLabel.text = "Beverage"
        case 3:
            titleLabel.text = "Coffee"
        default:
            return
        }
        //cartButton 컬러 설정
        cartButton.tintColor = UIColor(red: 1, green: 0.334, blue: 0.466, alpha: 1)
        // UICollectionViewFlowLayout을 사용하여 컬렉션 뷰의 레이아웃 설정
        let flowLayout = UICollectionViewFlowLayout()
        flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8) // 상하좌우 여백 설정
        flowLayout.minimumLineSpacing = 12 // 행 간 최소 간격
        flowLayout.minimumInteritemSpacing = 12 // 열 간 최소 간격
        flowLayout.scrollDirection = .vertical // 스크롤 방향
        // 셀 크기 설정
        let itemWidth = (collectionView.bounds.width - flowLayout.sectionInset.left - flowLayout.sectionInset.right - flowLayout.minimumInteritemSpacing) / 2 // 한 행에 2개의 셀이 들어가도록 설정
        let itemHeight = itemWidth * 1.4 // 가로:세로 비율
        flowLayout.itemSize = CGSize(width: itemWidth, height: itemHeight)
        collectionView.collectionViewLayout = flowLayout
        let backBarButtonItem = UIBarButtonItem(image: UIImage(systemName: "chevron.backward"), style: .plain, target: self, action: nil)
        backBarButtonItem.tintColor = UIColor(red: 0.98, green: 0.42, blue: 0.51, alpha: 1.00)
        backBarButtonItem.imageInsets = UIEdgeInsets(top: 0, left: 10, bottom: 50, right: 50)
        self.navigationItem.backBarButtonItem = backBarButtonItem
        self.navigationController?.navigationBar.backIndicatorImage = UIImage()
        self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage()
        // 네비게이션 바 디자인 설정
        navigationController?.navigationBar.shadowImage = UIImage() // 네비게이션 바 아래 선 제거
        navigationController?.navigationBar.barTintColor = UIColor.systemBackground // 네비게이션 바 배경 컬러
        // 컬렉션 뷰 데이터 불러오기
        setupCollectionView()
        // 초기에는 세그먼트 인덱스 0으로 설정하고 아이스크림 상품을 로드
        segmentedControl.selectedSegmentIndex = selectedIndex
        loadIceCreams()
    }

정리해보았다.

    override func viewDidLoad() {
        super.viewDidLoad()
        setupGradientLayer()
        setupTitleLabel()
        setupCartButton()
        setupCollectionViewLayout()
        setupNavigationBar()
        setupCollectionView()
        segmentedControl.selectedSegmentIndex = selectedIndex
        loadIceCreams()
    }

작업 제출 기한에 맞춰 급하게 작업하면서 지저분하게 방치되었던 코드를 다시 들여다보아야겠다고 생각했다.

리뷰에서도 말씀해주셨던 viewDidLoad 를 개선시키는 방향으로 구현해보았다.

이런식으로 간결하게 정리하면 얻을 수 있는 장점들은 아래와 같다.

가독성 향상

모듈화 및 재사용성

유연성

디버깅 용이성

테스트 용이성

앞으로는 비슷한 기능들을 묶어 모듈화 하여 추후의 재사용성을 고려해 작업하는 습관을 만들어야겠다.

profile
hello, world!

1개의 댓글

comment-user-thumbnail
2024년 4월 9일

..앗.. 제얘기네요... 저도해봐야겠습니다ㅠㅠ.. 뷰디드로드 왕창 줄여야겟다

답글 달기

관련 채용 정보