Swift - Namespace (struct, enum)

ChangJun Lee·2024년 1월 7일
0
post-custom-banner

Namespace ?

다음은 SwiftUI 에서 사용했던 일부 코드입니다.

...
VStack {
	TextField("이메일", text: $email, prompt: Placeholder.email)
    ...
}

이 코드에서 Placeholder 의 email 이라는, String 값은 다음과 같이 선언되어있기에 사용할 수 있는 것이다.

enum Placeholder {
	static let email: String = "이메일을 입력해주세요."
    static let password: String = "비밀번호를 입력해주세요."
}

이렇게 관련된 상수들을 모아둔 곳을 Namespace 라고 부른다.

그렇다면, 나는 왜 enum 과 static 프로퍼티를 사용했을까?
구조체를 사용하거나, enum 에서 case 를 사용하면 문제가 있나?

struct 사용

struct Placeholder {
	static let email: String = "이메일을 입력해주세요."
    static let password: String = "비밀번호를 입력해주세요."
}

다음과 같이 만든다면, let placeholder = Placeholder() 처럼 인스턴스화 할 수 있게 된다.
물론 init() 에 접근 제한자를 걸어서 제한 할 수 있지만, 애초에 enum 을 사용하면 그럴 일이 생기지 않는다.

enum 사용

enum Placeholder: String {
	case email = "이메일을 입력해주세요."
    case password = "비밀번호를 입력해주세요."
}

case 를 사용하는 경우에 String 타입만 가질 수 있다는 단점과,
매번 .rawValue 를 코드에 추가해줘야 하는 불편함을 겪게 되기도 합니다.
또한, case 가 선언된 enum 은 rawValue 를 사용하면, 구조체로 선언했을 때와 동일하게 인스턴스화 할 수 있게 된다는 단점도 존재한다.


어떤 방식으로, 어떻게 사용하는지는 개인의 차이..
그리고 또.. 내가 아직 알지 못하는 많은 것들이 있지 않을까?

profile
iOS Developer
post-custom-banner

0개의 댓글