Dart 의 장점을 알아봅시다 👏🏻
Dart는 두가지의 컴파일러를 사용한다.
Ahead-of-Time(AOT) 컴파일러
프로그램 실행 전에 미리 컴파일하는 컴파일러
Just-in-Tiem(JIT) 컴파일러
프로그램 실행 중(런타임)에 코드의 일부 또는 전부를 컴파일하는 컴파일러
=> Dart는 AOT 컴파일러로 성능을 높이고, JIT 컴파일러로 실시간으로 결과를 확인하면서 개발 효율을 높일 수 있습니다.
멀티 플랫폼 개발이 가능하다
멀티 플랫폼이란 하나의 프로그램이 여러 플랫폼에서 구동될 수 있는 환경을 의미합니다.
하나의 코드로 여러 플랫폼에서 사용 가능하다는 엄청난 장점!
사용가능한 플랫폼 종류
- 모바일
- Android
- ios
- 데스크탑
- Windows
- Linux
- maxOS
- 웹
- Chrome
- Firefox
- Safari
- Edge
간결하고, 읽기 쉬운 문법 + 현대적인 프로그래밍 언어지원 = Flutter
Dart는 C나 JavaScript등에 영감을 받아서 만들었기 때문에 이 언어들과 문법이 비슷하면서, 이 언어들의 단점을 보완하고자 했기 때문에 더 간결한 문법을 가지고 있습니다. 또한 객체지향, 함수형 프로그래밍, 비동기 프로그래밍 등의 현대적인 프로그램이 언어 기능을 지원해줍니다.
Type Safe
Dart는 안전한 타입 체계를 가지고 있습니다. 이는 코드의 예측 가능성을 높이고, 런타임 에러를 방지하며, 코드의 유지 보수를 쉽게 만드는 중요한 역할을 합니다. 특히 프론트엔드 개발에서는 UI와 관련된 로직이 복잡해질수록 타입 안전성이 더 중요해집니다.
타입의 중요성
- 버그 예방 및 조기 발견
- 타입 체계를 사용하면 변수나 함수의 입력 및 출력의 타입이 엄격하게 지정되기 때문에 타입 불일치로 인한 에러를 미리 방지할 수 있습니다.
- 코드 가독성 및 유지 보수성 향상
- 명시적인 타입은 코드가 수행하려는 의도를 명확하게 전달하기 때문에, 코드를 처음 접하는 사람도 변수나 함수의 역할을 더 쉽게 이해할 수 있습니다.
- IDE 지원 및 코드 자동 완성 기능 강화
- 안전한 타입 체계는 IDE에서 보다 강력한 자동 완성, 타입 추론, 코드 탐색 기능을 지원하게 해 줍니다. 이러한 툴 지원 덕분에 생산성이 높아지고, 오타나 불필요한 디버깅을 줄일 수 있습니다.
- 리팩토링의 안정성
- 타입이 엄격하게 정의된 경우, 함수나 모듈의 타입이 변경될 때 타입 검사를 통해 코드 전체에서 타입 불일치를 즉시 확인할 수 있습니다. 이는 코드 리팩토링 시 예상치 못한 오류를 줄이고, 변경에 대한 자신감을 높입니다.
- 타입 추론과 타입 시스템을 통한 문서화 효과
- 안전한 타입 체계는 일종의 “자체 문서화” 기능을 제공합니다. 코드 내 변수와 함수의 타입이 명확하게 정의되어 있으면 별도의 주석이 없어도 코드의 기능과 데이터 흐름을 쉽게 이해할 수 있습니다.
Null Safe
Dart는 Null Safe를 통해 null에 대해 안전한 상황을 만들어줍니다.
데이터가 null 값을 가질 수 있도록 설정하지 않는 한, 절대 null 값을 가질 수 없습니다(null값은 애초에 데이터가 없는 상태이기 때문에 컴퓨터에서 냅다 null을 던지면 오류가 발생합니다.)
Nullable
만약, 데이터가 미리 정해지지 않고 실행 후에 정해지는 경우와 같이 null을 사용해야 된다면 타입 뒤에 ?를 붙여주면 오류없이 null을 허용해줄 수 있습니다.
int a = 20; // a 는 null 값을 가질 수 없다.
a = null; // 오류 발생!
int? b = 20; // b 는 null 값을 가질 수 있다.
b = null; // 정상적으로 동작
+ null을 허용하는 변수는 초깃값이 설정되지 않으면 기본적으로 null을 가진다.
int? c; // c 는 null 값을 가질 수 있다.
print(c); // null