[swift] 접근 제어를 사용하여 코드 보호하기

Swift에서는 다음과 같은 네 가지의 접근 수준이 있습니다:

  1. Open: 다른 모듈에서도 접근 가능하며, 오버라이딩할 수 있는 최대 수준의 접근권한을 가집니다.
  2. Public: 다른 모듈에서 접근 가능하긴 하지만, 오버라이딩할 수 없는 최대 수준의 접근권한을 가집니다.
  3. Internal: 동일 모듈 내에서만 접근 가능한 접근 수준입니다. 기본 값이며, 별도로 명시하지 않아도 사용됩니다.
  4. File-private: 같은 소스 파일 내에서만 접근 가능한 접근 수준입니다.

이러한 접근 수준은 코드의 일부분만 공개하고 다른 부분은 감출 수 있도록 해줍니다. 이는 코드의 유지보수성을 높이고, 외부 요인에 의한 부작용을 최소화하는 데 도움이 됩니다.

아래는 간단한 예시입니다. 다음 코드에서 InternalClassExampleModule 모듈 외부에서 접근할 수 없지만, InternalClass 내부의 internalMethod는 해당 모듈 내의 어디서든 호출할 수 있습니다.

public class PublicClass {
    internal let internalProperty = "Internal"
}

open class OpenClass {
    open func openMethod() {}
}

fileprivate class FilePrivateClass {
    func fileprivateMethod() {}
}

internal class InternalClass {
    internal func internalMethod() {}
}

더 복잡한 코드에서는 더 많은 접근 수준을 사용하여 모듈 간, 클래스 간 또는 코드 내에서 적합한 보안 수준을 유지할 수 있습니다.