Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix [#166] 페이징 2개씩 쌓이는 오류사항 해결 완료 #167

Merged
merged 4 commits into from
Mar 20, 2024

Conversation

boogios
Copy link
Member

@boogios boogios commented Mar 20, 2024

👻 PULL REQUEST

💻 작업한 내용

  • 페이징 과정에서 배열 안에 중복해서 쌓이는 문제를 해결했습니다!!!
  • 커서 값이 -1인 경우에만 배열을 초기화 해주었습니당!

📟 관련 이슈

for content in data {
tempArrayData.append(content)
}
self.postData = tempArrayData
postDatas.append(contentsOf: postData)
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 코드 패치에 대한 간단한 코드 리뷰를 제공하겠습니다.

  1. 버그 위험:

    • self.postDataspostData가 혼용되고 있습니다. 잘못된 변수명 사용으로 데이터 소실 및 불일치 문제가 발생할 수 있습니다.
    • postDatas.append(contentsOf: postData)에서 postData는 실제로 self.postData입니다. 기존 postDataspostData 대신 tempArrayData를 추가해야 합니다.
  2. 개선 제안:

    • 반복문 대신 self.postData = data를 직접 사용하여 데이터 복사 및 할당을 줄일 수 있습니다.
    • 중복 코드들을 피하기 위해 공통 함수나 메서드를 활용하는 것이 좋습니다.
    • 코드 구성을 단순화하여 가독성을 개선할 수 있습니다.

개선된 코드 예시:

if let data = result?.data {
    var tempArrayData: [PostDataResponseDTO] = []

    for content in data {
        tempArrayData.append(content)
    }

    if cursor == -1 {
        self.postDatas = []
    }

    self.postData = tempArrayData
    self.postDatas.append(contentsOf: self.postData)
}

위 코드가 주어진 목적에 맞게 수정되었으며, 데이터의 일관성을 유지하면서 코드를 더 깔끔하게 만들 수 있습니다.

}
self.myPageCommentData = tempArrayData
myPageCommentDatas.append(contentsOf: myPageCommentData)
}
return result
} catch {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. getMemberContentAPI에 대한 호출 후 print("getMemberContentAPI \(self.contentCursor)") 구문이 불필요하므로 제거할 수 있습니다.

  2. extension MyPageViewModel 내의 코드에서 중복된 부분이 많습니다. 각각의 경우에 대해 조건이 달라지는 것은 명백하지만, 이를 더 효율적으로 처리할 수 있는 방법을 고려할 필요가 있습니다.

  3. 반복되는 코드를 줄이기 위해 조건문 내부의 로직을 하나로 통합할 수 있습니다. 조건부 시작 전에 myPageContentDatas, myPageContentData, myPageCommentDatas, myPageCommentData를 초기화하는 작업을 조건문 밖에서 수행하거나 중복 코드를 함수로 추출할 수 있습니다.

  4. 에러 처리 부분인 catch 블록에서 예외 처리는 너무 범위가 클 수 있습니다. 가능하다면 실패 유형에 따라 세심하게 처리할 수 있는 방안을 고려할 필요가 있습니다.

bindViewModel()
DispatchQueue.main.async {
self.notificationTableView.reloadData()
}
}
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여러 가지 지적 사항이 있습니다:

  1. 12번째 줄에서 viewModel.notificationLists.count > 15viewModel.notificationLists.count >= 15로 수정한 것은 올바른 것으로 보입니다.
  2. 옵셔널 체이닝 연산자 ??를 사용하여 마지막 알림 ID를 가져오는 부분에서 viewModel.notificationList.last??가 아니라 viewModel.notificationLists.last??.notificationId로 수정해야 합니다.
  3. lastNotificationId != -1 조건을 추가하여 -1인 경우에만 cursor를 설정하게 함으로써 오류 리스크를 감소시킬 수 있습니다.
  4. bindViewModel()self.notificationTableView.reloadData() 호출 부분을 비동기로 처리하는 것이 좋습니다.

전체적으로 코드 품질을 향상시키기 위해 위의 수정사항을 고려할 것을 권장드립니다.

Copy link
Collaborator

@yeonsu0-0 yeonsu0-0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3
와우 ~~ !!! 이 문제였군요,, 찾아내서 해결해준 상우 짱짱 !! 👻🔥

@boogios boogios merged commit 8b704d2 into develop Mar 20, 2024
1 check passed
@boogios boogios deleted the fix/#166-pagingError branch March 20, 2024 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Fix] 페이징 2개씩 쌓이는 오류 해결
2 participants