Null Safety là tính năng giúp ngăn chặn lỗi do các biến có giá trị rỗng (null) gây ra. Được áp dụng rộng rãi trong ngôn ngữ Dart (và framework Flutter), tính năng này giúp các nhà phát triển phát hiện lỗi ngay tại thời điểm biên dịch thay vì khi ứng dụng chạy, giúp ứng dụng ổn định và ít bị crash hơn.

Dart áp dụng hai nguyên tắc chính để đảm bảo an toàn:
- Mặc định không cho phép null (Non-nullable by default): Theo mặc định, tất cả các biến trong chương trình đều được coi là kiểu không thể nhận giá trị null. Điều này có nghĩa là một biến khai báo kiểu String sẽ luôn chứa một chuỗi ký tự hợp lệ.
- Hoàn toàn an toàn (Fully sound): Tính năng này đảm bảo rằng nếu hệ thống xác định một thứ gì đó không phải là null, thì nó sẽ không bao giờ là null.
Các toán tử và từ khóa phổ biến. Để làm việc với các giá trị có thể là null, Dart cung cấp các công cụ cụ thể:
- Dấu chấm hỏi (?): Dùng để khai báo một biến có thể nhận giá trị null.
- Toán tử kiểm tra (!): Dùng để ép buộc Dart coi một biến có thể là null là không có giá trị null.
- Toán tử gán mặc định (??): Dùng để trả về một giá trị mặc định nếu biến đó đang là null.
- Từ khóa (late): Dùng để khai báo một biến chưa được khởi tạo giá trị ngay lúc khai báo nhưng chắc chắn sẽ được gán giá trị trước khi sử dụng.
Nói chung là:
- String là mặc định ko null
ví dụ:
- Có ! cũng chắc chắn ko null
ví dụ:
ví dụ:
- Có ?? nếu ko null thì in ra biến
ví dụ:
- Có late mà sau đó ko gán giá trị thì cũng lỗi
Bài viết khác
Testing Principles & Testing Levels
Testing Principles & Testing Levels là gì? Trong kiểm thử phần mềm, Testing Principles (Các nguyên tắc kiểm thử) là kim chỉ nam giúp định hướng cách thực hiện kiểm thử hiệu quả, trong khi Testing Levels (Các cấp độ kiểm thử) là các giai đoạn phân loại phạm vi kiểm thử từ nhỏ đến […]
Dart OOP
Dart OOP Dart OOP (Object-Oriented Programming) là cách lập trình dựa trên object (đối tượng) và class (lớp). Dart hỗ trợ đầy đủ các khái niệm OOP, giúp tổ chức code thành các đối tượng có dữ liệu (properties) và hành vi (methods), từ đó code dễ quản lý, tái sử dụng và mở rộng […]
Future & Async/Await
Future & Async/Await là các cơ chế trong Dart dùng để xử lý bất đồng bộ (Asynchronous Programming), cho phép chương trình thực hiện những tác vụ cần thời gian như gọi API, đọc database, đọc file… mà không làm ứng dụng bị đứng trong lúc chờ kết quả. Future Future đại diện cho một […]
SOLID và Design pattern
SOLID SOLID là 5 nguyên tắc thiết kế phần mềm hướng đối tượng, giúp xây dựng hệ thống dễ hiểu, dễ thay đổi, dễ mở rộng, dễ test, ít gây ảnh hưởng dây chuyền, dễ bảo trì SOLID gồm: S: Single Responsibility Principle O: Open/Closed Principle L: Liskov Substitution Principle I: Interface Segregation Principle D: […]
SDLC&STLC
1. Tổng quan nền tảng về quy trình phát triển và kiểm thử phần mềm Trong bất kỳ một dự án công nghệ thông tin nào, dù là ứng dụng di động nhỏ hay hệ thống phần mềm doanh nghiệp khổng lồ, việc để sản phẩm đi đến thành công không thể dựa vào sự […]
Frontend Web Roadmap
Roadmap download here frontend web Keyword Git Agile Waterfall Scrum Kanban SOLID Internet Fundamentals HTTP/HTTPS DNS & Domain Browser Fundamentals HTML Semantic HTML Forms & Validation CSS Flexbox & Grid Responsive Web Design Bootstrap JavaScript Fundamentals DOM Async JavaScript Fetch / HTTP Client TypeScript npm / pnpm / yarn React Components React Component […]