반응형

named constructor

프로그래밍 언어 Dart(다트)는 재밌는 개념이 많이 있습니다.

그 중 하나는 named constructor입니다.

named constructor의 사용법과 왜 쓰는지에 대해서 한번 알아보도록 하겠습니다.

 

named constructor는 클래스의 인스턴스를 생성할 때 사용하는 특별한 타입의 생성자입니다.

Dart는 하나의 클래스에서 여러 개의 생성자를 정의할 수 있게 해주는데, 이를 가능하게 하는 것이 named constructor입니다.

 

named constructor를 사용하면, 생성자에 이름을 붙여서 같은 클래스의 다른 생성자와 구별할 수 있습니다.

 


 

예제

// Champion 클래스 생성
class Champion {
  String name, team;
  int level;

  // 기본 생성자
  Champion({
    required this.name,
    required this.team,
    required this.level,
  });

  // named constructor #1. 첫 시작할 때 초보자 챔피언 생성
  Champion.beginner()
      : name = 'Ashe',
        team = 'blue',
        level = 1;

  // named constructor #2. 블루팀 챔피언 생성
  Champion.createBlueTeam({
    required String name,
  })  : name = name,
        team = 'blue',
        level = 1;

  // named constructor #3. 레드팀 챔피언 생성
  Champion.createRedTeam({
    required String name,
  })  : name = name,
        team = 'red',
        level = 1;
}

void main() {
  // 기본 생성자를 활용한 챔피언(인스턴스) 생성
  Champion blackLobster = Champion(
    name: 'blackLobster',
    team: 'green',
    level: 100,
  );
  print(blackLobster.name); // 'blackLobster'
  print(blackLobster.team); // 'green'
  print(blackLobster.level); // 100

  // 초보자 챔피언 생성
  Champion beginner = Champion.beginner();
  print(beginner.name); // 'Ashe'
  print(beginner.team); // 'blue'
  print(beginner.level); // 1

  // 블루팀 챔피언 생성
  Champion gragas = Champion.createBlueTeam(name: 'Gragas');
  print(gragas.name); // 'Gragas'
  print(gragas.team); // 'blue'
  print(gragas.level); // 1
}

 

위 예제처럼 생성자 안에 여러 생성자를 정의하여 사용할 수 있습니다.

 


사용 하는 이유가 뭐예요?

 

named constructor를 사용하는 이유는 3가지 정도로 추려볼 수 있을 것 같습니다.

 

1. 명확성, 가독성

named constructor는 생성자의 용도를 명확하게 표현할 수 있게 해줍니다. 예제처럼 'beginner', 'createBlueTeam'과 같이 명확한 메서드명으로 인해 해당 생성자가 어떤 역할을 하는지 용도를 분명하게 밝힐 수 있습니다. 이는 가독성을 높여주기도 하죠.

 

2. 유연성

하나의 클래스 안에 여러 생성자를 정의함으로써 다양한 초기화 경로를 제공합니다. 다양한 상황에 대응할 수 있는 유연성을 제공해주는 셈이죠.

 

3. 유지보수

결국 named constructor에 명확한 역할을 부여함으로써, 코드의 유지보수 향상에 도움을 줍니다. 각 생성자가 하는 일이 명확해지기 때문에 코드를 이해하고 수정하는데 드는 비용이 줄어듭니다.

 


Flutter(플러터)를 위해 Dart를 있는데, 재밌는 개념이 많이 있네요.

다음에 또 재밌는 개념이 있으면 소개하도록 하겠습니다.

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기