Understanding the Underscore (`_`) in Flutter 🔍
Understanding the Underscore (_
) in Flutter 🔍
[English caption below]
Hiểu về Dấu Gạch Dưới (_
) trong Flutter 🔍
Khi làm việc với Flutter và Dart, bạn sẽ thường gặp các biến hoặc phương thức có dấu gạch dưới (_
) ở đầu. Nếu bạn đang thắc mắc tại sao và khi nào nên sử dụng dấu này, bài viết này sẽ giúp bạn làm sáng tỏ! Hãy cùng tìm hiểu ý nghĩa của dấu _
trong Dart và cách nó ảnh hưởng đến quyền truy cập của mã nguồn.
🔑 Mục Đích của Dấu Gạch Dưới (_
) trong Dart
Trong Dart, dấu gạch dưới (_
) được sử dụng để chỉ định tính riêng tư. Một biến hoặc phương thức bắt đầu bằng _
được coi là riêng tư, nghĩa là nó chỉ có thể được truy cập trong cùng một file. Đây là một phần trong phong cách lập trình của Dart, giúp bạn phân biệt giữa các biến, phương thức công khai (public) và riêng tư (private).
🚧 Khi Nào Nên Sử Dụng Dấu Gạch Dưới
Bạn nên sử dụng dấu gạch dưới khi muốn hạn chế truy cập vào một biến hoặc phương thức, đảm bảo rằng nó chỉ có thể được sử dụng bên trong file nơi nó được khai báo. Điều này hữu ích khi bạn muốn:
- Ẩn chi tiết triển khai nội bộ.
- Ngăn chặn truy cập vào một số phần của mã từ các file hoặc lớp bên ngoài.
- Giữ cho API của bạn gọn gàng, chỉ công khai những gì thật sự cần thiết.
Ví dụ:
class MyClass {
int _privateVar = 10; // Biến riêng tư, chỉ truy cập trong file này
void _privateMethod() {
print("Đây là phương thức riêng tư");
}
int publicVar = 20; // Biến công khai, có thể truy cập từ bất cứ đâu
void publicMethod() {
print("Đây là phương thức công khai");
}
}
void main() {
MyClass myClass = MyClass();
// Truy cập thành phần công khai
print(myClass.publicVar); // Output: 20
myClass.publicMethod(); // Output: Đây là phương thức công khai
// Truy cập thành phần riêng tư (Không cho phép truy cập từ ngoài file)
// print(myClass._privateVar); // Lỗi: _privateVar không thể truy cập ở đây
// myClass._privateMethod(); // Lỗi: _privateMethod không thể truy cập ở đây
}
Trong ví dụ trên:
_privateVar
và_privateMethod
là riêng tư, vì vậy chúng không thể được truy cập từ bên ngoài file.publicVar
vàpublicMethod
là công khai, có thể được truy cập từ mọi nơi.
❌ Khi Không Cần Sử Dụng Dấu Gạch Dưới
Bạn không cần sử dụng dấu gạch dưới khi:
- Bạn muốn biến hoặc phương thức công khai, cho phép truy cập từ các file hoặc module khác.
- Bạn đang làm việc trong phạm vi hẹp (như trong một phương thức) và không cần quan tâm đến quyền riêng tư.
Ví dụ:
class OpenClass {
int publicNumber = 100; // Biến công khai
void printNumber() {
print("Số là $publicNumber");
}
}
void main() {
OpenClass openClass = OpenClass();
openClass.printNumber(); // Output: Số là 100
}
Trong trường hợp này, publicNumber
được thiết kế để có thể truy cập tự do, vì vậy không cần dấu gạch dưới.
🎯 Những Thực Hành Tốt Nhất
Dưới đây là một số hướng dẫn giúp bạn quyết định khi nào nên sử dụng dấu gạch dưới:
- Sử dụng
_
cho các biến/phương thức nội bộ: Nếu một thành phần là một phần của logic nội bộ của class và không nên bị truy cập từ bên ngoài, hãy sử dụng_
. - Tránh sử dụng
_
cho API công khai: Nếu bạn đang viết thư viện hoặc class mà người khác sẽ sử dụng, giữ cho các biến và phương thức công khai không có_
. - Tổ chức file cẩn thận: Bằng cách sử dụng các thành phần và phương thức riêng tư (
_
), bạn có thể tổ chức mã nguồn tốt hơn, tách biệt giữa logic nội bộ và phần API công khai.
Kết Luận 🏁
Dấu gạch dưới (_
) trong Dart là một phần của phong cách lập trình clean, giúp bạn kiểm soát tính riêng tư và quyền truy cập của mã nguồn. Bằng cách sử dụng _
, bạn có thể giữ logic nội bộ ẩn và tạo ra các API rõ ràng hơn. Hãy cân nhắc biến hoặc phương thức nào nên là công khai và cái nào nên là riêng tư để làm cho các dự án Flutter của bạn dễ bảo trì và dễ đọc hơn.
Happy Codeing! 🚀
Understanding the Underscore (_
) in Flutter 🔍
When working with Flutter and Dart, you will often come across variables or methods that begin with an underscore (_
). If you're wondering why and when to use this prefix, this post will clarify its meaning! Let’s explore the significance of the _
in Dart and how it impacts the accessibility of your code.
🔑 Purpose of the Underscore (_
) in Dart
In Dart, the underscore (_
) is used to indicate privacy. A variable or method that begins with _
is considered private, meaning it can only be accessed within the same file. This is part of Dart's coding style to help differentiate between public and private members.
🚧 When to Use the Underscore
You should use the underscore when you want to restrict access to a variable or method, ensuring it can only be used within the file where it is declared. This is helpful when you want to:
- Hide internal implementation details.
- Prevent access to certain parts of your code from external files or classes.
- Keep your API clean, exposing only the necessary parts.
Example:
class MyClass {
int _privateVar = 10; // Private variable, only accessible in this file
void _privateMethod() {
print("This is a private method");
}
int publicVar = 20; // Public variable, accessible from anywhere
void publicMethod() {
print("This is a public method");
}
}
void main() {
MyClass myClass = MyClass();
// Access public members
print(myClass.publicVar); // Output: 20
myClass.publicMethod(); // Output: This is a public method
// Access private members (Not allowed from outside the file)
// print(myClass._privateVar); // Error: _privateVar can't be accessed here
// myClass._privateMethod(); // Error: _privateMethod can't be accessed here
}
In this example:
_privateVar
and_privateMethod
are private, so they cannot be accessed from outside the file.publicVar
andpublicMethod
are public and can be accessed from anywhere.
❌ When Not to Use the Underscore
You don’t need to use the underscore when:
- You want a variable or method to be public, allowing access from other files or modules.
- You’re working in a narrow scope (e.g., within a method), and privacy isn't a concern.
Example:
class OpenClass {
int publicNumber = 100; // Public variable
void printNumber() {
print("The number is $publicNumber");
}
}
void main() {
OpenClass openClass = OpenClass();
openClass.printNumber(); // Output: The number is 100
}
In this case, publicNumber
is designed to be accessible, so there's no need for the underscore.
🎯 Best Practices
Here are some guidelines to help you decide when to use the underscore:
- Use
_
for internal variables/methods: If a member is part of the internal logic of a class and should not be accessed externally, use_
. - Avoid
_
for public APIs: If you're creating a library or class that others will use, keep public variables and methods without_
. - Organize your files carefully: By using private members (
_
), you can better organize your code, separating internal logic from the public-facing API.
Conclusion 🏁
The underscore (_
) in Dart is part of coding clean conventions that help manage the privacy and accessibility of your code. By using _
, you can keep internal logic hidden and create clearer APIs. Consider carefully which variables or methods should be public and which should be private to make your Flutter projects more maintainable and readable.
Happy coding! 🚀
Subscribe to my newsletter
Read articles from Chung Nguyen Thanh directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Chung Nguyen Thanh
Chung Nguyen Thanh
A passionate programmer from Vietnam. 👨💻 Setting sail to explore new horizons. 🌊⛵ A global citizen embracing the world. 🗺 Lifelong learner. 📚 https://chunhthanhde.github.io 🎯🏆