Open samsung-ga opened 2 years ago
비슷한 상수들끼리 한 곳에 모아두게 되거나 Pallete와 같이 앱에 사용되는 Color들을 한 곳에 모아두는 namespace를 만들어 사용하면 재사용성과 유지보수 측면에서 큰 향상을 가져온다.
이 때, namespace와 상수들을 모아두는 객체는 struct 대신 enum을 사용하는 이유는 무엇일까?
struct
enum
struct ColorPalette { static let Red = UIColor(red: 1.0, green: 0.1491, blue: 0.0, alpha: 1.0) static let Green = UIColor(red: 0.0, green: 0.5628, blue: 0.3188, alpha: 1.0) static let Blue = UIColor(red: 0.0, green: 0.3285, blue: 0.5749, alpha: 1.0) // ... }
하지만, 다른 개발자가 타입 프로퍼티를 모아둔 namespace라는 것을 모르고 ColorPallete()로 접근하게 될 가능성이 있습니다. 이를 해결할 방법으로 2가지가 있습니다.
ColorPallete()
private init() {}
enum ColorPalette { static let Red = UIColor(red: 1.0, green: 0.1491, blue: 0.0, alpha: 1.0) static let Green = UIColor(red: 0.0, green: 0.5628, blue: 0.3188, alpha: 1.0) static let Blue = UIColor(red: 0.0, green: 0.3285, blue: 0.5749, alpha: 1.0) enum Gray { static let Light = UIColor(white: 0.8374, alpha: 1.0) static let Medium = UIColor(white: 0.4756, alpha: 1.0) static let Dark = UIColor(white: 0.2605, alpha: 1.0) } }
결국, enum 자료형은 생성자가 없기 때문에 실수로 코드를 작성하여도 컴파일러가 오류를 잡아주게 됩니다.
비슷한 상수들끼리 한 곳에 모아두게 되거나 Pallete와 같이 앱에 사용되는 Color들을 한 곳에 모아두는 namespace를 만들어 사용하면 재사용성과 유지보수 측면에서 큰 향상을 가져온다.
이 때, namespace와 상수들을 모아두는 객체는
struct
대신enum
을 사용하는 이유는 무엇일까?Answer
하지만, 다른 개발자가 타입 프로퍼티를 모아둔 namespace라는 것을 모르고
ColorPallete()
로 접근하게 될 가능성이 있습니다. 이를 해결할 방법으로 2가지가 있습니다.private init() {}
선언해주기결국, enum 자료형은 생성자가 없기 때문에 실수로 코드를 작성하여도 컴파일러가 오류를 잡아주게 됩니다.