🚩 Problem
Khi áp dụng Early Exit (thoát sớm) để tránh nested if, nhiều lập trình viên thường dừng lại ở bước đầu tiên:
if (!a)
return;
if (!b)
return;
statement;
Cách viết này đã tốt hơn nested if lồng nhau, nhưng vẫn có thể tối ưu hơn nữa.
Nếu nhiều điều kiện đều dẫn đến cùng một hành động thoát (return), ta nên kết hợp chúng lại trong một biểu thức logic duy nhất để code gọn gàng và dễ hiểu hơn.
✅ Solution — Combine Early Exit Conditions
Thay vì tách từng điều kiện riêng lẻ:
if (!a)
return;
if (!b)
return;
Hãy kết hợp chúng lại bằng toán tử logic:
if (!a || !b)
return;
👉 Code ngắn hơn, dễ đọc hơn và tránh được việc xử lý trùng lặp.
💻 Example
Old Way — Nested If
private void Login()
{
bool isLoggedIn = true; // Simulating a logged-in user
bool hasAdminPrivileges = true; // Simulating an admin user
if (isLoggedIn)
{
if (hasAdminPrivileges)
{
// Grant access to the admin page
Console.WriteLine("Access granted to the admin page.");
}
else
{
Console.WriteLine("Access denied. User does not have admin privileges.");
}
}
else
{
Console.WriteLine("Access denied. User is not logged in.");
}
}
Better Way — Combine Early Exit Conditions
private void Login_With_Combine_Early_Exit()
{
bool isLoggedIn = true; // Simulating a logged-in user
bool hasAdminPrivileges = true; // Simulating an admin user
// Exit early if any condition fails
if (!isLoggedIn || !hasAdminPrivileges)
return;
// Grant access to the admin page
Console.WriteLine("Access granted to the admin page.");
}
Demo
void Main()
{
Login();
Login_With_Combine_Early_Exit();
}
🔍 Giải thích
if (!isLoggedIn || !hasAdminPrivileges)có nghĩa là:
“Nếu không đăng nhập hoặc không có quyền admin, thì dừng lại.”- Khi kết hợp điều kiện bằng
||(OR), ta gom nhóm các trường hợp loại trừ vào cùng một lối thoát duy nhất. - Điều này giúp code tập trung vào luồng thành công (success path), thay vì sa lầy trong các nhánh điều kiện phụ.
⚡ Lợi ích
| ✅ Ưu điểm | 💬 Mô tả |
|---|---|
| Giảm độ sâu logic | Không còn if lồng nhau |
| Tăng tính tập trung | Chỉ giữ lại “điều kiện thành công” trong luồng chính |
| Dễ mở rộng | Có thể thêm điều kiện khác chỉ bằng một OR |
| Dễ đọc | Người khác có thể hiểu ngay khi xem dòng đầu tiên |
🧩 Ví dụ thực tế khác
Giả sử bạn cần kiểm tra điều kiện khi gửi email xác nhận:
Old Way
private void SendConfirmationEmail()
{
bool isRegistered = true;
bool hasValidEmail = true;
bool emailServerOnline = false;
if (isRegistered)
{
if (hasValidEmail)
{
if (emailServerOnline)
{
Console.WriteLine("Email sent successfully.");
}
}
}
}
Better Way — Combine Early Exit
private void SendConfirmationEmail_Better()
{
bool isRegistered = true;
bool hasValidEmail = true;
bool emailServerOnline = false;
if (!isRegistered || !hasValidEmail || !emailServerOnline)
return; // Exit early if any condition fails
Console.WriteLine("Email sent successfully.");
}
💬 Kết luận
Combine Early Exit là một phần mở rộng tự nhiên của Early Exit,
giúp bạn:
- Giảm bớt số dòng code,
- Làm rõ luồng xử lý chính,
- Và giữ cho logic trở nên rõ ràng, tuyến tính, dễ bảo trì.