[iOS] Modularization(2) - Loose Coopling
2023. 5. 18. 01:31
iOS/iOS
"모듈화"란 Software를 각 기능별로 분할하여 설계하는 기법이다. 지난 포스팅에서 모듈화가 적용이 안된 모노리틱 앱 구조는 코드의 영향 범위를 파악하기 어렵고, 앱의 규모가 커질 경우 빌드시간이 오래 걸리게 된다. 이에 따라 Swift에서 모듈화를 진행하는 방법에 대해 알아보았다. 하지만, 이러한 물리적인 코드의 분리는 반쪽짜리 모듈화에 지나지 않는다. "좋은 모듈화"는 용도에 맞게 잘 구분된 기능을 가진 독립적인 모듈로 나누는 것이다.모듈의 독립성은 응집도와 결합도로 판단하게 된다. 모듈의 "응집도"란 모듈 내부의 기능적인 집중도를 의미한다.모듈의 "결합도"란 다른 모듈간의 상호 의존성을 의미한다. 즉, 좋은 모듈이란 응집도는 높고 결합도는 낮아야 한다. 이번 포스팅에선 모듈간의 느슨한 결합..
[Design Pattern] DI(Dependency Injection)
2023. 5. 8. 01:10
iOS/Pattern
"의존성 주입"이란, 객체가 의존관계에 있을 때 "직접 생성"하는 것이 아닌, DIP를 적용하여 "외부에서 제공"받는 패턴을 말한다. 한 번에 이해하기 어려우니 천천히 알아보자. Dependency 대부분의 프로그램에서 여러 객체들은 협력하게 되기 때문에, 객체 사이의 의존성은 존재하게 된다. 예를 들어, User의 정보를 Networking을 통해 가져와 이를 화면에 출력시키는 객체가 있다 하자. class UserRepository { func fetchUser() -> User { ... return User(name: "Jung", id: "111") } } class UsersPresentation { private let usersRepository = UserRepository() func ..