Skip to content

JSON 직렬화 로직 유틸리티로 분리#44

Merged
chanho0908 merged 1 commit intomainfrom
feature/40-split-data-core-network
Jan 20, 2026
Merged

JSON 직렬화 로직 유틸리티로 분리#44
chanho0908 merged 1 commit intomainfrom
feature/40-split-data-core-network

Conversation

@chanho0908
Copy link
Owner

이슈 번호

#40

작업내용

JSON 직렬화 로직을 공통 유틸로 분리해 중복을 줄였습니다.

결과물

N/A

Before After
N/A N/A

@coderabbitai
Copy link

coderabbitai bot commented Jan 20, 2026

📝 Walkthrough

Walkthrough

이번 PR은 JSON 직렬화/역직렬화 로직을 중앙화하기 위한 리팩토링입니다. 새로운 JsonUtil 유틸리티 객체를 도입하고 defaultJson 인스턴스와 제네릭 decode() 함수를 제공합니다. 이를 통해 Answer, Exam, Question 원격 데이터소스의 4개 파일에서 직접적인 Kotlinx Serialization JSON 사용을 제거하고, 중복된 Json 초기화를 제거하며 디코딩 로직을 통합합니다.

Estimated Code Review Effort

🎯 2 (Simple) | ⏱️ ~12 minutes


개선 관점의 코드 리뷰

✅ 좋은 점: 일관성 있는 리팩토링

중복된 Json 인스턴스 생성(Json { ignoreUnknownKeys = true })을 제거하고 중앙화된 JsonUtil.defaultJson으로 통일한 점이 좋습니다. 이를 통해:

  • 설정 관리의 일원화: JSON 설정이 한 곳에서만 관리되므로 향후 유지보수가 용이합니다
  • 일관된 패턴: 4개 파일에 동일한 패턴이 적용되어 코드의 예측 가능성이 높습니다

📌 토론하면 좋을 점

1. JsonUtil.decode() 함수의 예외 처리 전략

  • JsonUtil.decode()가 직렬화 실패 시 어떻게 예외를 처리하는지 확인이 필요합니다
  • 현재 각 datasource에서의 try-catch 로직이 여전히 필요한지, 아니면 JsonUtil에서 처리되는지 명확히 하면 좋겠습니다
  • 제안: JsonUtil의 decode 함수에 대한 예외 처리 정책을 주석으로 문서화하면 어떨까요?

2. 인코딩 로직의 일관성

  • 일부 파일에서는 여전히 json.encodeToJsonElement()를 사용하는데, 인코딩도 JsonUtil로 통합하는 계획이 있는지 궁금합니다
  • 질문: 현재 단계에서 디코딩만 JsonUtil로 옮기고 인코딩은 유지하신 이유가 있으신가요?

3. JsonUtil 테스트 커버리지

  • 새로운 유틸리티 객체이므로 단위 테스트가 있는지 확인하면 좋겠습니다
  • defaultJsondecode() 함수에 대한 테스트 케이스가 있다면 PR 설명에 언급해 주시면 리뷰어들의 신뢰도가 높아질 것 같습니다

🎯 결론

이번 리팩토링은 설계 원칙(중앙화, DRY)을 잘 따르는 깔끔한 개선입니다. 위의 질문들을 통해 예외 처리와 향후 확장 계획을 명확히 하면, 더욱 견고한 코드 기반이 될 것 같습니다.

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 변경사항의 핵심을 명확하게 요약하고 있습니다. JSON 직렬화 로직을 유틸리티로 분리했다는 주요 변경사항을 정확히 전달합니다.
Description check ✅ Passed PR 설명이 변경사항과 관련이 있습니다. 이슈 번호와 작업 내용을 포함하며, 중복을 줄였다는 목표를 명확히 기술하고 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@chanho0908 chanho0908 self-assigned this Jan 20, 2026
@chanho0908 chanho0908 merged commit 14b9cf1 into main Jan 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant