그동안 TIL작성에 좀 소홀했는데
그 이유였던 기초 프로젝트가 오늘 끝났다!
오늘은 프로젝트 진행하면서 느꼈던 점들을 작성해보며
회고해보려한다.
일단 깃허브 링크부터 달고 시작하자
깃허브 링크
이번 프로젝트에 대한 코드, 설명을 저 링크에서 찾아볼 수 있다.
우선 내가 담당한 파트는 CartViewController
이다
쉽게 말해서 장바구니 페이지를 담당했다.
큰 틀에서 구현한 기능들을 살펴보면
- 하프 모달로 나타내기
- 테이블뷰에 셀 표시
- 주문개수, 총 주문가격 값 업데이트
- 전체삭제, 결제하기 버튼 동작
- 관련 Alert창 띄우기, 동작 후 페이지의 값 변화 등
정도이다.
이렇게만 봤을때는 처음에 금방 구현할 줄 알았으나
경기도 오산이었다.
이번에 MVC패턴도 쓰고 다른 페이지와의 데이터도 주고받아야해서
이 과정에서 어려움을 많이 겪었다.
특히 데이터관련 처리!
그전까지는 단순히 출력해주는 경우가 많았는데
전 페이지에서 넘어온 데이터를 내가 받아서 화면에 출력하고
또 그 데이터를 Cell
에 넘겨줘야했다
결국 이 파트에서 가장 애먹었다.
그래도 다른 팀원분이 Model
파트 관련해서 굉장히 잘 작성해주셔서
수월했던것 같다.
튜터님께 받았던 팀 피드백과 개인적인 피드백을 정리해보면
일단 내 파트의 viewDidLoad()
부분의 간략화?가 필요하다.
왜냐고 묻는다면
override func viewDidLoad() {
super.viewDidLoad()
product = productManager.getProductList()
cartTableView.reloadData()
// purchaseBtn 색상 변경
purchaseBtn.setTitle("결제하기", for: .normal)
purchaseBtn.setTitleColor(.white, for: .normal)
purchaseBtn.backgroundColor = .bluebucks
var buttonConfig = UIButton.Configuration.tinted()
buttonConfig.contentInsets = NSDirectionalEdgeInsets(top: 16, leading: 0, bottom: 16, trailing: 0)
purchaseBtn.configuration = buttonConfig
purchaseBtn.clipsToBounds = true
purchaseBtn.layer.cornerRadius = 8
// allClearBtn
allClearBtn.setTitle("전체삭제", for: .normal)
allClearBtn.configuration = buttonConfig
allClearBtn.clipsToBounds = true
allClearBtn.layer.cornerRadius = 8
// cartTableView
cartTableView.layer.borderColor = UIColor.lightGray.cgColor
cartTableView.layer.borderWidth = 2
cartTableView.layer.cornerRadius = 8
// menuView
menuView.layer.cornerRadius = 8
// 테이블 뷰 관련 설정
cartTableView.delegate = self
cartTableView.dataSource = self
// menuCnt, menuPriceSum 설정
menuCnt.textColor = .darkGray
menuPriceSum.textColor = .darkGray
// 초기값 세팅
updateCartInfo()
let nib = UINib(nibName: "TableViewCell", bundle: .main)
self.cartTableView.register(nib, forCellReuseIdentifier: TableViewCell.identifier)
}
내가 요모양으로 작성했기 때문... 하하
사실 이것에 대한 문제점은 알고 있어서
각 버튼이나 요소별로 함수화 해야겠다고 생각은 했는데
프로젝트 마감시간에 쫓겨서 깜빡했다..
아무튼 이 부분이 코드가 길고 알아보기 힘드니 정리하면 좋을거같다고 하셨다
정리하면 아래처럼 된다.
override func viewDidLoad() {
super.viewDidLoad()
setupProductList()
setupTableView()
setupButtons()
setupViewStyles()
// 초기값 세팅 관련 코드
updateCartInfo()
}
함수로 기능을 빼두고 viewDidLoad()
에서는 호출하여 사용만 함으로써 훨씬 간단해졌다
정리한 함수 파트는 아래에 첨부한다.
func setupProductList() {
product = productManager.getProductList()
cartTableView.reloadData()
}
func setupTableView() {
let nib = UINib(nibName: "TableViewCell", bundle: .main)
cartTableView.register(nib, forCellReuseIdentifier: TableViewCell.identifier)
cartTableView.delegate = self
cartTableView.dataSource = self
cartTableView.layer.borderColor = UIColor.lightGray.cgColor
cartTableView.layer.borderWidth = 2
cartTableView.layer.cornerRadius = 8
}
func setupButtons() {
configureButton(purchaseBtn, title: "결제하기", bgColor: .bluebucks)
configureButton(allClearBtn, title: "전체삭제")
}
func configureButton(_ button: UIButton, title: String, bgColor: UIColor? = nil) {
button.setTitle(title, for: .normal)
button.setTitleColor(.white, for: .normal)
if let bgColor = bgColor {
button.backgroundColor = bgColor
}
var buttonConfig = UIButton.Configuration.tinted()
buttonConfig.contentInsets = NSDirectionalEdgeInsets(top: 16, leading: 0, bottom: 16, trailing: 0)
button.configuration = buttonConfig
button.clipsToBounds = true
button.layer.cornerRadius = 8
}
func setupViewStyles() {
menuView.layer.cornerRadius = 8
menuCnt.textColor = .darkGray
menuPriceSum.textColor = .darkGray
}
코드 부분의 피드백은 이 정도가 전부였다
그래도 다행히 데이터를 받아오는 부분이나 기타 로직적인 부분에서는
좋게 봐주신거같아서 좋았다
이번 프로젝트를 진행하면서 어려움도 많이 겪었지만
그만큼 내가 부족한 부분을 알게되었고 보완할 점을 찾아서 기뻤다
챗gpt같은 서비스에 대한 의존도도 줄인것같고 급할때는 사용하긴 했지만
무엇보다 다른사람들과 협업하면서 보다 나은 협업에 대한 태도, 방법들을 배워간것같다.
내가 느낀 보완할 점은 개선 되긴했지만 챗gpt 사용을 더욱 줄일 것과
생각한 바를 명확한 코드로 작성하는 법이다.
다음 프로젝트까지 혹은 진행 중에 이것을 좀 더 신경써서 공부를 해야겠다