일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- BFS
- UIKit
- Clean Architecture
- 알고리즘 공부
- 알고리즘
- dfs
- swift
- Kotlin
- 백준 온라인 저지
- 파이썬
- 오토레이아웃
- ios
- Swift공부
- SwiftUI
- 파이썬 풀이
- Android
- 백준온라인저지
- 그리디 알고리즘
- greedy algorithm
- Autolayout
- 안드로이드 공부
- error
- 앱개발
- iOS개발
- 프로그래머스
- Algorithm
- Level 1
- Python
- 정렬
- 공부
- Today
- Total
목록Clean Architecture (4)
Tori의 개발 공부
문제 상황맥락 에러(ContextualError) 도입 후 문제 발생맥락 에러를 통해 에러의 발생 위치와 상황을 명확히 하려 했으나, 일부 레거시 코드로 인해 에러가 올바르게 전달되지 않고 비효율적으로 처리되고 있었습니다.레거시 코드로 인한 의존성 및 책임 문제레거시 코드가 여전히 존재하면서 의존성 규칙(Clean Architecture 원칙)이 어긋났고, 각 계층의 책임이 명확히 분리되지 않은 상태였습니다.이러한 문제로 인해 에러 처리 체계의 일관성이 떨어지고, 코드 유지보수 및 확장성이 저하되는 상황이었습니다.해결방법레거시 코드 제거 및 의존성 재정비데이터 계층(Data Layer)에서 발생한 에러(DataError)를 도메인 계층으로 전달할 때, 불필요한 변환 로직과 중복된 에러 처리를 제거도메인 ..
에러 핸들링은 소프트웨어 개발에서 피할 수 없는 과제입니다.하지만 이전 프로젝트들에서는 에러 처리 방식은 단순히 “에러 발생 시 메시지를 출력하고 멈춘다”는 수준에 머무르는 경우가 많았습니다.이렇게 단순화된 접근은 문제 해결에 필요한 정보를 제공하지 못하거나, 사용자 경험(UX)을 저해하는 결과를 초래할 수 있습니다.이번 글에서는 클린아키텍처 구조에서 맥락(Contextual) 에러와 프레젠테이션(Presentation) 에러를 도입하여 에러 핸들링 체계를 개선한 사례와 그로 인한 효과를 공유합니다.단순한 에러 처리의 한계처음 프로젝트를 시작했을 때 저희는 DataError만을 사용해 에러를 처리했습니다.예를 들어 네트워크 통신 에러, 디코딩 인코딩 에러 등 Data Layer에서 발생하는 에러들에 관해..
문제 상황프로젝트를 진행하면서 팀원들의 개발 일정 상 앱의 디자인을 어느 정도 진행 된 뒤 API 연결에 들어가게 되었다.그러다 보니 연결이 제대로 되었는지, 데이터는 제대로 받아오는지 확인하기 위해 클린아키텍처 구조 상 DataSource (API 연결부)부터 Repository, UseCase를 지나 Presentation 레이어의 뷰모델, 뷰 까지 모두 연결되어야지만 테스팅이 가능했다.그런데 이 때, 앱의 구현이 진행됨에 따라 프레젠테이션 레이어 연결 시 변경해줘야 하는 부분들이 점차 늘어났고, 테스팅 실패 시 최악의 경우 전체 구조를 변경해야 하는 경우도 있었다.따라서 이 부분에서 불편함을 느껴 단계별로 DataSource 의 API 테스트, Repository의 DTO -> Entity 변환 테..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cf6EJv/btsIUAR21Oc/x81DdQBkwKzaXL2HiKEoJ1/img.png)
ReactorKit을 사용하여 MVVM 모델로 구현을 하고 있었으며 클린아키텍처 구조로 프로젝트를 구성하고 있었다.프로젝트의 전체적인 구조를 살펴보면 다음과 같다Presentation ㄴ View(ViewController) ㄴ ViewModel(Reactor)Domain ㄴ Model ㄴ Usecase ㄴ Repository (프로토콜)Data ㄴ DTO Model ㄴ RepositoryImpl (구현부) ㄴ Datasource 로그인 로직을 구현하면서 여러 데이터 소스들을 사용하고 합치는 과정들을 거치게 되었고,이때 점점 레이어나 각 구성 요소들의 책임들을 모호하게 코드를 작성하고 있다는 생각이 들어 명확하게 책임 분리를 정리해야겠다고 생각했다.처음에 공부..