좋은 코드리뷰란?

  • 리뷰할 코드는 가능한 300줄 이하로 작게 유지하기.
  • 코드가 많을 경우 더 작은 덩어리로 나누는 습관 기르기.
  • 너무 큰 작업을 커밋하기 보다는 작은 단위로 자주 커밋하기.
  • PR보낼 때 목적을 분명하게 전달하기.
  • 리뷰기간은 최대한 빠르게.
  • PR에 설명이 부족하면 리뷰 시작 전 설명 구하기. (시간 절약할 수 있음)
  • 좋은 리뷰어는 효율적인 코드를 작성하여 예제까지 제공하기.

코드리뷰는 함께 성장하는 과정이라고 생각합니다. 모르는 것을 부끄러워하지 않고 서로 도움이 되고 건설적인 방식으로 피드백을 주고 받는 것이 중요!

참고 url - https://medium.com/better-programming/better-code-reviews-190efd53bc10

UITableView에서 리로드할 때 스크롤 포지션 어긋나는 이슈

해당 이슈는 UITableView의 셀 높이들이 동적일 때 리로드할 때 스크롤 위치가 이상한 곳으로 설정되어집니다.
유연하고 부드러운 테이블뷰를 만들기 위해서는 heightForRowAt, estimatedHeightForRowAt 모두 적절히 지정되어야합니다.

estimatedHeightForRowAt를 잘 지정해줘야 리로드할 때 예상한 셀 높이에 따라 스크롤 포지션이 정해집니다.

제가 찾은 해결 방법은...

셀 높이를 저장할 프로퍼티를 추가하여 willDisplay에서 셀 높이를 저장하고, estimatedHeightForRowAt에서 저장한 셀 높이를 반환하여 해결.

private var cellHeights: [IndexPath: CGFloat] = [:]
  • willDisplay
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
      self.cellHeights[indexPath] = cell.frame.size.height
}
  • estimatedHeightForRowAt
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    if let height = self.cellHeights[indexPath] {
          return height
    }
    return UITableView.automaticDimension
}