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

refactor: ContentListFeature 액션 컨벤션 수정 #140

Merged
merged 5 commits into from
Oct 15, 2024

Conversation

ShapeKim98
Copy link
Contributor

@ShapeKim98 ShapeKim98 commented Oct 6, 2024

#️⃣연관된 이슈

#129

📝작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)

  • ContentListFeature 액션 컨벤션 적용
  • merge, concatenate 을 사용한 묶음 액션 핸들링 명시화

스크린샷 (선택)

💬리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

  • merge, concatenate를 사용하여 여러 액션 실행을 좀 더 명확하게 가져가고자 하였습니다.
  • 아래는 run액션을 사용한 뷰가_나타났을때코드 입니다.
return .run { send in
    await send(.async(.컨텐츠_개수_조회_API))
    await send(.async(.컨텐츠_목록_조회_API))
    await send(.async(.클립보드_감지))
}
  • await 키워드로 인해 순차적으로 실행되는것 처럼 보이나, 각각의 액션 내부에는 run액션으로 서로 다른 비동기 작업을 할당 받고 있기 때문에, 병렬적으로 동작합니다.
    그렇기 때문에 제가 보기엔 액션 흐름 이해가 혼란스럽다고 느껴서 merge, concatenate를 통해 병렬적인지 순차적인지 명시를 하고 싶었습니다.
    여러 액션을 묶는 것은 merge, concatenate을 활용하고, 꼭 필요한 비동기 작업에만 run액션을 쓰고 싶었습니다.
  • 아래 코드는 run을 썼을때와 동작하는데 있어서는 큰차이가 없지만, merge를 통해 병렬젹으로 동작한다는걸 확실하게 보여줄 수 있다는 생각입니다..!!
return .merge(
    .send(.async(.컨텐츠_개수_조회_API)),
    .send(.async(.컨텐츠_목록_조회_API)),
    .send(.async(.클립보드_감지))
)
  • 사실 이런 것들을 적어놨어야 하는데 너무 성의없이 pr를 날렸던거 같습니다. 앞으론 주의하겠습니다.
  • 추가로 merge, concatenate가독성을 높이기 위해, 몇몇 액션을 함수로 묶었습니다.

close 이슈번호

@ShapeKim98 ShapeKim98 added the Refactor 🏗️ 뚝딱뚝딱 코드 및 구조 수정 label Oct 6, 2024
@ShapeKim98 ShapeKim98 requested a review from stealmh October 6, 2024 15:02
@ShapeKim98 ShapeKim98 self-assigned this Oct 6, 2024
@stealmh stealmh changed the title refactor: ContentListlFeature 액션 컨벤션 수정 refactor: ContentListFeature 액션 컨벤션 수정 Oct 6, 2024
Comment on lines -163 to +168
case .bottomSheetButtonTapped(let delegate, let content):
return .run { send in
await send(.inner(.dismissBottomSheet))
await send(.scope(.bottomSheet(delegate: delegate, content: content)))
}
case .deleteAlertConfirmTapped:
case .bottomSheet(let delegate, let content):
return .concatenate(
.send(.inner(.바텀시트_해제)),
.send(.scope(.bottomSheet(delegate: delegate, content: content)))
)
case .컨텐츠_삭제_눌렀을때:
Copy link
Contributor

Choose a reason for hiding this comment

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

여기도 설명필요 최소한 바꿨으면 PR에 before after정도는...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

여기도 설명필요 최소한 바꿨으면 PR에 before after정도는...

넵..

Comment on lines 185 to 190
.run { send in
for await _ in self.pasteBoard.changes() {
let url = try await pasteBoard.probableWebURL()
await send(.delegate(.linkCopyDetected(url)), animation: .pokitSpring)
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

merge형태로 쓸꺼면 얘도 action으로 빼서 깔끔하게 가져가야함
PokitSearchFeature 310번째줄 참고해서 작성해주세요

Comment on lines 236 to 246
case .컨텐츠_삭제_API(id: let id):
let count = state.domain.contentCount
let newCount = count - 1

return .merge(
.send(.inner(.컨텐츠_개수_업데이트(newCount))),
.run { send in
let _ = try await contentClient.컨텐츠_삭제("\(id)")
await send(.inner(.컨텐츠_삭제_API_반영(id: id)), animation: .pokitSpring)
}
)
Copy link
Contributor

Choose a reason for hiding this comment

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

기존 방법보다 가독성이 너무 떨어져요
굳이 await하지 않고 동시에 액션 가져가겠다는 걸 이해했는데도 그렇습니다

Copy link
Contributor Author

Choose a reason for hiding this comment

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

기존 방법보다 가독성이 너무 떨어져요 굳이 await하지 않고 동시에 액션 가져가겠다는 걸 이해했는데도 그렇습니다

넵 좀 더 고민해보겠습니다

Copy link
Contributor

@stealmh stealmh left a comment

Choose a reason for hiding this comment

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

PR 신경써서 작성 다시 부탁드립니다. 액션 컨벤션만 바꾼게 아니던데요

@stealmh stealmh linked an issue Oct 8, 2024 that may be closed by this pull request
14 tasks
@ShapeKim98
Copy link
Contributor Author

PR 신경써서 작성 다시 부탁드립니다. 액션 컨벤션만 바꾼게 아니던데요

넵..!!

@ShapeKim98 ShapeKim98 merged commit fb90c81 into develop Oct 15, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Refactor 🏗️ 뚝딱뚝딱 코드 및 구조 수정
Projects
None yet
Development

Successfully merging this pull request may close these issues.

액션 컨벤션 정립
2 participants