🔥 모듈과 소스 파일

366자
5분

Swift의 접근 제어 모델은 모듈과 소스 파일이라는 개념에 기반을 두고 있어요. 모듈과 소스 파일에 대해 자세히 살펴보도록 할게요.

모듈

모듈은 코드 배포의 단일 단위랍니다. 프레임워크나 애플리케이션을 하나의 단위로 빌드하고 제공하는 거죠. 또한 Swift의 import 키워드를 사용하여 다른 모듈에서 해당 모듈을 가져올 수 있어요.

import Foundation // Foundation 모듈을 가져와요.
swift

Xcode에서 각 빌드 대상(앱 번들이나 프레임워크 등)은 Swift에서 별도의 모듈로 취급된답니다. 앱의 코드 중 일부를 독립형 프레임워크로 그룹화하여 여러 애플리케이션에서 해당 코드를 캡슐화하고 재사용할 수 있겠죠? 이렇게 하면 프레임워크 내에서 정의한 모든 내용은 앱에서 가져와 사용할 때나 다른 프레임워크에서 사용할 때 별도의 모듈이 된답니다.

소스 파일

소스 파일은 모듈 내의 단일 Swift 소스 코드 파일이에요. 즉, 앱이나 프레임워크 내의 단일 파일이라고 볼 수 있죠. 일반적으로 개별 타입을 별도의 소스 파일에 정의하지만, 하나의 소스 파일에 여러 타입, 함수 등의 정의를 포함할 수도 있어요.

// Person.swift
struct Person {
    var name: String
    var age: Int
}
 
func introduce(_ person: Person) {
    print("이름: \(person.name), 나이: \(person.age)")
}
swift

위의 예제처럼 Person 구조체와 introduce 함수를 하나의 소스 파일에 정의할 수 있죠. 이렇게 관련된 타입과 함수를 하나의 소스 파일에 그룹화하면 코드의 가독성과 유지 관리성이 높아진답니다.

접근 제어와의 관계

모듈과 소스 파일은 Swift의 접근 제어 모델과 밀접한 관련이 있어요. 접근 제어를 통해 코드의 캡슐화를 강화하고, 모듈 간 또는 소스 파일 간의 상호 작용을 제어할 수 있죠.

다음은 접근 제어 수준에 따른 가시성을 나타낸 표예요.

접근 수준같은 소스 파일같은 모듈다른 모듈
private
fileprivate
internal
public
open
  • private: 같은 소스 파일 내에서만 접근 가능해요.
  • fileprivate: 같은 소스 파일 내에서만 접근 가능하죠.
  • internal: 같은 모듈 내에서 접근 가능해요. (기본 접근 수준)
  • public: 모든 소스 파일에서 접근 가능하며, 다른 모듈에서 접근할 수 있답니다.
  • open: public과 같지만, 다른 모듈에서 상속과 재정의가 가능하죠.

이처럼 모듈과 소스 파일은 Swift의 접근 제어 모델의 기반이 되는 중요한 개념이에요. 모듈과 소스 파일을 적절히 활용하고 접근 제어를 적용하면 코드의 구조와 캡슐화를 개선할 수 있답니다.