[Dart] Private Contructor에 관하여

Ximyaa·2022년 6월 26일
0
post-thumbnail
class SomeClass {
  SomeClass._();

  static const ...
  static const .... 
}

Flutter 프로젝트를 둘러보다 이해가 안가는 코드 구문이 있어서 찾아보았다. 위 코드처럼 특정 Class안에서 ._() 코드의 쓰임이 무엇일까?

Private Contructor

답은 간단했다.
바로 private contructor(생상자) 이었다.

// 보통의 클래스와 생성자

class SomeModelClass {
  final String name;
  final String nickName;

/// 생성자
  TmdbMovieContentModel(
      {required this.name,
      required this.nickName,
     });

....
}     

일반적인 생성자 코드와 달라서 헷갈렸던 부분이다.

Private Contructor의 역할

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 생성자를 적지 않는다고 클래스가 인스턴스화 되는 것은 아니다. 다만 해당 클래스의 역할을 명시적으로 나타내주고 개발 과정 중 실수를 줄일 수 있는 이점이 분명히 있다.

profile
개발자 지망생

0개의 댓글