[Architecture] Modular Architecture / MFA에서 추상레이어의 Export

2024. 4. 1. 02:04🍏/Swift

Swift의 modular architecture / Micro Feature Architecture(MFA)에서 Feature, Domain, Core, Shared의 레이어를 추상적으로 나누고 해당하는 레이어에 맞춰서 코드를 관리할 때 Export를 통하여 제어합니다.

이 글에서는 Core 레이어를 통하여 예시를 들고있습니다.

CoreExport.swift 파일을 사용하여 다른 모듈에서 CoreNetwork 및 CoreNetworkInterface 모듈을 임포트할 수 있도록 설정하는 것은 모듈 간의 의존성 관리 및 코드 재사용성을 높이기 위한 전략 중 하나입니다. 이러한 접근 방식은 특히 대규모 프로젝트나 여러 모듈이 상호작용하는 복잡한 시스템에서 유용합니다.

CoreExport.swift의 목적

  • 간소화된 임포트: 다른 모듈이나 타겟에서 CoreNetwork 및 CoreNetworkInterface를 사용하고자 할 때, 각각의 모듈을 따로 임포트하는 대신 Core 모듈만 임포트하면 됩니다. 이렇게 하면, Core 모듈을 사용하는 측면에서 의존성 관리가 더 편리해집니다.
  • 캡슐화와 추상화: CoreExport.swift를 통해 CoreNetwork와 CoreNetworkInterface의 기능을 Core 모듈로 "리-익스포트"함으로써, Core 모듈이 네트워크 관련 기능의 집합점 역할을 하게 됩니다. 이는 Core 모듈의 사용자가 네트워킹 기능에 대한 구체적인 구현 세부 사항을 몰라도 되도록 추상화 수준을 높여줍니다.
  • 의존성 관리: 프로젝트 구조가 복잡해지고 모듈 간의 의존성이 많아질수록, 의존성을 관리하는 것이 어려워집니다. CoreExport.swift를 사용함으로써 Core 모듈을 통해 필요한 의존성을 제공받게 되므로, 다른 모듈이나 타겟에서 필요한 의존성을 더 명확하게 관리할 수 있습니다.
//
//  CoreExport.swift
//  Core
//
//  Created by 김찬희 on 2024/04/01.
//

@_exported import CoreNetwork
@_exported import CoreNetworkInterface

 

exported import가 하나도 없는 경우 컴파일 되지 않음.