Swift의 접근 제어자는 코드의 가시성과 접근 가능 범위를 제어하여 데이터 은닉과 캡슐화를 구현하는 중요한 도구입니다.

 

각 접근 제어자의 특징언제 사용하는지를 간단히 요약

 

1. open

 

특징

가장 높은 접근 수준.

다른 모듈에서 접근, 상속, 오버라이드 모두 가능.

언제 사용하는가?

프레임워크를 개발할 때, 외부 모듈에서 클래스나 메서드를 상속 및 오버라이드할 수 있도록 허용하고 싶을 때.

확장 가능성을 열어두고자 할 때.

 

2. public

 

특징:

다른 모듈에서 접근 가능하지만 상속 및 오버라이드는 불가능.

 언제 사용하는가?

외부 모듈에서 사용할 수 있는 API를 제공하되, 상속이나 오버라이드는 막고 싶을 때.

안정적인 인터페이스만 외부에 제공하고 내부 동작은 제어할 때.

 

3. internal (기본 접근 수준)

 

특징:

동일 모듈 내에서만 접근 가능.

기본 설정으로, 명시하지 않으면 internal로 간주.

 언제 사용하는가?

앱이나 프레임워크 내부에서만 사용하는 로직이므로 외부에 공개할 필요가 없을 때.

모듈 내에서 자유롭게 접근하되, 모듈 외부와는 차단하고 싶을 때.

 

4. fileprivate

 

특징:

동일 파일 내에서만 접근 가능.

 언제 사용하는가?

특정 파일에서만 사용되는 헬퍼 함수나 클래스가 있을 때.

파일 내 여러 타입 간 상호작용이 필요하지만, 다른 파일에서는 접근하지 않도록 제한하고 싶을 때.

 

5. private

 

특징:

동일 타입 내에서만 접근 가능.

동일 타입 내의 익스텐션에서도 접근 가능.

 언제 사용하는가?

클래스나 구조체의 내부에서만 사용되는 속성이나 메서드를 외부에 노출하지 않고 철저히 보호하고 싶을 때.

완전한 캡슐화를 원할 때.

 

접근 제어자 사용 요령

 

최소 권한 원칙: 가능한 가장 낮은 수준의 접근 제어자를 사용하여 데이터와 기능을 보호할 수 있습니다.

모듈 간 의존성 최소화: 외부 모듈에 노출할 필요가 없는 코드는 internal 이하로 설정해 모듈 간 결합도를 줄일 수 있습니다.

공개 API 설계 시: 외부에 공개할 필요가 있는 클래스나 함수는 public이나 open으로 설정하고, 내부 동작을 제어하려면 private 또는 fileprivate을 사용합니다.

 

ytw_developer