글쓴이는 Dart를 사용하다 보면 가끔 헷갈릴 때가 생기곤 한다.
class IsarRepository {
final Isar isar;
IsarRepository(
this.isar,
);
}
class IsarRepository {
final Isar isar;
IsarRepository({
required this.isar
});
}
IsarRepository({}), IsarRepository()의 차이가 뭐였지???
이번 기회에 글로 정리하여 Dart에 대한 기본 개념을 다지려고 한다.
이 방식은 위치 매게변수를 사용한다.
이 방식은 명명된 매개변수를 사용한다.
class IsarRepository {
final Isar isar;
final String? name;
final bool debugMode;
// 위치 매개변수만 사용
IsarRepository(this.isar) : name = null, debugMode = false;
// 명명된 매개변수 사용, 일부는 선택적
IsarRepository({
required this.isar,
this.name,
this.debugMode = false,
});
// 위치 매개변수와 명명된 매개변수 혼합
IsarRepository(this.isar, {this.name, this.debugMode = false});
}
// 사용 예
void main() {
final isar = Isar.getInstance()!;
// 위치 매개변수
final repo1 = IsarRepository(isar);
// 명명된 매개변수
final repo2 = IsarRepository(isar: isar, name: 'MyRepo', debugMode: true);
// 혼합 사용
final repo3 = IsarRepository(isar, name: 'AnotherRepo');
}
이 예제에서 볼 수 있듯이, 명명된 매개변수를 사용하면 코드의 가독성이 향상되고, 선택적 매개변수를 쉽게 추가할 수 있다.
또한 매개변수의 의미가 더 명확해져 API를 사용하는 개발자들이 쉽게 이해할 수 있다.