본문 바로가기
반응형

전체 글94

[Swift/휴식맞쥬] DIContainer 사건의 시작현재 휴식맞쥬는 클린아키텍쳐를 기반으로 프로젝트를 진행하고 있습니다. 그렇기 때문에, DI로 네트워크 레이어를 분리하고 객체간의 결합도를 줄이려는 방향으로 개발을 진행하던 중 레이어 및 기능이 분리되면서 초기화 파라미터의 수가 많아졌습니다. 그 결과, 의존성 주입이 복잡해지고, 코드의 가독성이 떨어지게 되었습니다. 그리고 프로젝트의 여러 곳에서 동일한 의존성 객체를 필요로 할 때, 중복으로 객체 생성이 이루어져 불필요한 자원 낭비가 발생했습니다. 이는 메모리 사용량 증가와 성능 저하로 이어질 수 있습니다. 이러한 문제를 마주하여, DIContainer를 통해 해당문제를 해쳐나갈려고합니다. ㅎㅎ 기존의 코드 예제 let usecase = DetailPerfumeUseCase(repo.. 2024. 9. 3.
Entity, DTO, DAO, VO, Repository와 효율과 책임에 대한 고민 고민의 시작요새 프로젝트들 마다 클린 아키텍처를 적용하여, 진행중인데 문뜩 각 레이어에 대한 개념정리와 용어정리 그리고 혼자만의 고민이 있어 정리해야겠다는 생각이 들어, 해당 포스트를 작성한다. 클린 아키텍처(Clean Architecture)에서는 각 레이어가 명확한 책임을 가지고 있으며, 그 책임에 따라 다양한 개념들이 사용됩니다. 클린 아키텍처를 구성하는 핵심 레이어는 크게 Data, Domain, Present 이렇게 3개로 나뉘고 그 다음 UseCase, Interface, Repostiory등이 안에 위치해있습니다..이번에는 제목과 같이 Entity, DTO, DAO, VO, Repository에 대해 적을려고 합니다. 1. EntityEntity는 도메인 모델의 핵심을 이루는 비즈니스 객체... 2024. 8. 20.
[ReactorKit] transform과 global state에 대하여 Transformfunc transform(action: Observable) -> Observablefunc transform(mutation: Observable) -> Observablefunc transform(state: Observable) -> ObservableTransform의 함수 종류는 총 3개가 있다. transform 함수는 개발자가 Action, State 및 Mutation 스트림을 조작할 수 있게 해준다.부작용 처리: 로깅, 분석 또는 네트워크 요청과 같은 부작용 처리.복잡한 반응형 흐름 구성: 여러 작업을 체이닝하여 구성.액션 및 상태 필터링 또는 수정: 더 예측 가능한 상태 관리 흐름을 만들기 위해.Global State와의 상호작용: 여러 Reactor가 공통 상태를 공.. 2024. 8. 5.
[Swift] global과 static은 기본적으로 lazy gobal과 static의 Lazy 초기화 Lazy 초기화란?Lazy 초기화는 변수가 실제로 사용될 때까지 초기화를 지연하는 기법을 말한다. 이는 프로그램의 시작 시점에 불필요한 메모리 사용을 피하고, 초기화 비용을 줄이기 위해 사용된다. 다시 말해, 변수가 처음 사용되기 전까지는 초기화되지 않는다.공식문서에서는 "lazy 저장 변수는 이것이 처음 사용되기 전까지 초기값이 계산되지 않는 프로퍼티 입니다. 사용자는 선언부에 lazy 수정자를 붙임으로써 lazy 저장 변수를 나타낼 수 있습니다."라고 되어있다.사용자는 항상 lazy 프로퍼티를 variable로 선언해야만 한다.왜냐하면 이 프로퍼트의 초기값을 인스턴스 초기화가 완료된 시점까지 알 수 없기 때문이다.상수 프로퍼티는 초기화가 끝나기전까지 반드시 .. 2024. 7. 30.
[Swift] 싱글톤(Singleton)패턴과 예제 Singleton Pattern이란? 싱글톤 패턴이란, 특정 클래스의 인스턴스가 하나만 생성되도록 보장하고, 이에 대한 전역적인 접근점을 제공하는 디자인 패턴 전역 접근싱글톤패턴은 전역적인 접근이 가능하다는 특징과 동시에 단점이 될 수 있다.전역 접근은 어플리케이션 전체에서 단 하나의 인스턴스에 접근할 수 있어, 여러 곳에서 동일한 객체를 필요로 할 때 유용하지만, 그만큼 유의해야할 점도 있다. How 어떻게 쓰는가?static과 private initclass Singleton { static let shared = Singleton() private init() { // 초기화 코드 }} static 키워드는 클래스의 인스턴스를 전역적으로 접근할 수 있도록 하기 .. 2024. 7. 23.
[Swift/UIKit] UIColor를 HexString으로 받는 Extension extension UIColor { convenience init(hexString: String) { let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) var int = UInt64() Scanner(string: hex).scanHexInt64(&int) let alpha, red, green, blue: UInt64 switch hex.count { case 3: (alpha, red, green, blue) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0.. 2024. 7. 19.
반응형