코드베이스를 더 행복하게 만드는 9가지 Dart 문법 설탕 기능
출처: Dev.to
2년 넘게 사용해 온 유용한 Dart 언어 기능들. Kotlin과 다른 언어들을 오가며 작업하다 보니, Dart에는 눈치채지 못할 정도로 매일 쓰는 문법 설탕이 많다는 걸 깨달았습니다—이 기능들이 조용히 제 삶을 훨씬 편하게 만들어 주죠. 다른 언어로 전환할 때마다 이름이 있든 없든 매개변수, 널‑인식 연산자, 스프레드 연산자 같은 작은 편리함이 그리워집니다. 특히 Flutter 코드베이스를 깔끔하게 유지하는 데 큰 도움이 됩니다.
아래는 제가 일상에서 즐겨 쓰는 기능들입니다.
생성자 축약 (Initializer Parameters)
class Person {
String name;
int age;
// 자세한 버전
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
다음처럼 간단히 쓸 수 있습니다:
class Person {
String name;
int age;
Person(this.name, this.age);
}
깨끗하고 가독성이 좋으며 보일러플레이트가 적습니다.
화살표 함수 (=>)
// 자세한 버전
int add(int a, int b) {
return a + b;
}
Dart 스타일:
int add(int a, int b) => a + b;
짧은 함수와 콜백에 딱 맞습니다.
캐스케이드 연산자 (..)
var person = Person()
..name = 'John'
..age = 30
..sayHello();
다음과 동일합니다:
var person = Person();
person.name = 'John';
person.age = 30;
person.sayHello();
특히 Flutter 위젯 트리에서 강력합니다.
널‑인식 연산자
Dart는 널 처리를 표현력 있게, 안전하게 해줍니다:
?.– 널 예외를 방지??– 기본값 제공??=– 널일 때만 할당
String? name;
print(name?.toUpperCase() ?? 'No name');
name ??= 'Guest';
한 번 익숙해지면 돌아가기 힘듭니다.
컬렉션 if / for (리스트, 셋, 맵 안에서)
var isLoggedIn = true;
var menu = [
'Home',
if (isLoggedIn) 'Profile',
for (var i = 1; i 3.14 * radius * radius;
}
간단하고 표현력이 풍부하며 가독성이 좋습니다.
문자열 보간
print('Hello, $name! You are ${age + 1} next year.');
문자열 연결보다 훨씬 깔끔합니다.
Kotlin에서 아직도 그리운 것들
구조 분해 선언
값을 바로 풀어낼 수 있다는 점이 매우 편리합니다.
강력한 when 식
Kotlin의 when은 Dart의 switch보다 표현력이 뛰어납니다:
when (value) {
in 1..10 -> ...
is String -> ...
}
범위, 타입 검사, 다중 조건을 바로 지원합니다.
마무리 생각
Dart가 항상 인정받지는 않지만, 개발자 경험이 Flutter를 생산적으로 느끼게 하는 이유 중 하나입니다. 이런 작은 문법 설탕들이 모여 큰 차이를 만들고, 한 번 익숙해지면 다른 언어에서 그 부재를 크게 느끼게 됩니다.
Flutter/Dart 개발자라면 공감하실 겁니다. 아직 아니라면—Dart를 한 번 써보세요 😉