class SomeClass {
SomeClass._();
static const ...
static const ....
}
Flutter 프로젝트를 둘러보다 이해가 안가는 코드 구문이 있어서 찾아보았다. 위 코드처럼 특정 Class안에서 ._()
코드의 쓰임이 무엇일까?
답은 간단했다.
바로 private contructor
(생상자) 이었다.
// 보통의 클래스와 생성자
class SomeModelClass {
final String name;
final String nickName;
/// 생성자
TmdbMovieContentModel(
{required this.name,
required this.nickName,
});
....
}
일반적인 생성자 코드와 달라서 헷갈렸던 부분이다.
Class._()
구문을 사용할 때는 해당 클래스가 인스턴스화하거나 서브 클래싱을 방지할 때 사용되는 생성자 구문이다. 즉 생성자를 private
하여 해당 생성자를 다른 곳에서 호출할 계획이 없음을 확실히 하는 것이다.
class AppColor {
AppColor._();
static const Color notWhite = Color(0xFFEDF0F2);
static const Color nearlyWhite = Color(0xFFFEFEFE);
static const Color white = Color(0xFFFFFFFF);
static const Color nearlyBlack = Color(0xFF213333);
}
프로젝트 내에서 사용되는 컬러는 관리하는 AppColor
클래스가 있다고 가정해보자. 해당 클래스의 변수는 static
으로 선언되어 있기 때문에 클래스를 인스턴스화 할 필요가 없다. 이때 private 생성자
를 적절하게 사용해줄 수 있다.
private 생성자
를 적지 않는다고 클래스가 인스턴스화 되는 것은 아니다. 다만 해당 클래스의 역할을 명시적으로 나타내주고 개발 과정 중 실수를 줄일 수 있는 이점이 분명히 있다.