내용 정리
마이페이지 뷰에서 내가 등록한 킥보드를 관리하고, 수정할 수 있는 뷰를 구현
상세페이지의 UI는 UICollectionView 하나만 사용하면 되기 때문에 크게 어려울 것이 없다.
컬렉션뷰의 셀을 커스텀하게 만들어주고, 이를 UIView에 넣어 뷰 컨트롤러가 관리하게 하면 되기 때문이다.
final class MyKickboardDetailViewItem: UICollectionViewCell {
static let id: String = "MyKickboardDetailViewItem"
private let kickboardImage = UIImageView()
private let kickboardNickNameView = UILabel()
private let kickboardLocationView = UILabel()
// ...
}
final class MyKickboardDetailView: UIView {
weak var modalViewDelegate: ModalViewDelegate?
private lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
layout.minimumLineSpacing = 15
layout.minimumInteritemSpacing = 15
layout.itemSize = .init(width: 350, height: 120)
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.backgroundColor = .white
collectionView.contentInset = .init(top: 20, left: 0, bottom: 20, right: 0)
collectionView.register(MyKickboardDetailViewItem.self, forCellWithReuseIdentifier: MyKickboardDetailViewItem.id)
return collectionView
}()
// ...
}
final class MyKickboardDetailViewController: UIViewController, ModalViewDelegate {
private let kickboardDetailView = MyKickboardDetailView()
override func viewDidLoad() {
super.viewDidLoad()
setupViewConfiguration()
setupDetailView()
}
// ...
}

상세페이지는 내가 구현했지만, 이를 연결할 마이페이지 뷰는 다른 팀원이 구현했기 때문에 코드에 대한 해석이 먼저 필요했다.
나는 어떤 UIView를 선택했을 때 이 페이지가 네비게이션으로 열리도록 하고 싶었기 때문에 새로운 코드를 추가해줬다.
private func viewTapAction() {
let touchEvent = UITapGestureRecognizer(target: self, action: #selector(pushDetailView))
self.kickboardSectionView.addGestureRecognizer(touchEvent)
}
@objc private func pushDetailView() {
self.navigationController?.pushViewController(MyKickboardDetailViewController(), animated: true)
self.navigationController?.navigationBar.isHidden = false
}

내용 정리
프로젝트의 UI 일관성을 위해 UI를 수정하는 리팩토링을 진행하였다.
그런데 이제 내가 작성한 코드가 아닌...
사실 리팩토링을 진행한 내용은 UI의 컬러를 수정하는 것과 오토레이아웃 수정, 그리고 불필요한 UI의 제거가 전부이다.
프로젝트의 컬러, UI 일관성을 위해 필요한 작업이었다고는 생각하지만, 내가 작성한 코드가 아닌 팀원이 작성한 코드를 내가 리팩토링 한다는 점이 계속 마음에 걸렸다.
왜냐하면 팀원분도 나름 의견이 있으셔서 이런 코드를 작성하셨을텐데 내가 바꾸는게 맞는걸까? 하는 의문이 든 것이다.
물론 팀원분께 미리 리팩토링을 하고 싶은데 내가 해도 될지 양해를 구했지만, 그럼에도 거부감이 드는 것은 팀원의 생각을 내 의견대로 바꾸는 것 같은 느낌일 들기 때문인 것 같다.
남이 내 코드를 바꾸는 것도 사실 거부감이 드는 것 같다.
잘못된 코드라면 당연히 고치는게 맞지만, 그게 아닌 성향의 차이 등으로 코드를 바꿔버리면 약간 기분이 상할 것 같기도 하다.
내가 이런 생각을 하는데, 다른 사람이라고 안 할 것이라고는 생각하지 않기 때문에 더욱 다른 사람의 코드에 대해 피드백 하거나 수정하는 것을 거리낌 없이 해내기는 어려운 것 같다는 생각을 한다.
결국 리팩토링은 마쳤지만 찜찜한 마음이 남는다.
| 리팩토링 전 | 리팩토링 후 |
|---|---|
오늘은 프로젝트에서 상세페이지에 대한 UI를 구현하고, 팀원의 코드를 리팩토링 하는 작업을 진행하였다.
팀원 분이 일이 많아 보이셔서 내가 해도 되는지 양해를 구하고 진행하긴 했지만,
위에서도 서술했듯 찝찝함이 남는다...
이런 성향 탓에 1인 개발을 추구하게 되는 걸지도 모르겠다는 생각을 한 하루였다.
리팩토링 당한다? 라는 표현도 웃기지만 당하는 입장에서는 정말 엄청 엄청 고맙고... 리팩토링 한 결과물을 직접 보고 기존 코드랑 어떻게 다른 지 공부할 수 있게 되어 좋았어요 (오늘 당함)