Menu
CoddyTech

Lập trình phòng vệ

Thuộc phần Logic và luồng chương trình trong hành trình C# của Coddy. Bài học 34 trên 66.

Lập trình phòng vệ là một kỹ thuật giúp ngăn lỗi do tham chiếu null gây ra. Kỹ thuật này bao gồm việc kiểm tra các giá trị null trước khi sử dụng đối tượng.

Kiểm tra null trước khi sử dụng một đối tượng:

string name = GetNameFromSomewhere();

// Kiểm tra để phòng lỗi
if (name == null)
{
    // Xử lý trường hợp null
    name = "Default Name";
}

// Giờ có thể dùng name an toàn
Console.WriteLine(name.ToUpper());

Xác thực tham số trong các phương thức:

public void ProcessOrder(Order order)
{
    // Kiểm tra đề phòng tham số (parameter) null
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    // Giờ có thể xử lý đơn hàng an toàn
    Console.WriteLine("Processing order: " + order.Id);
}

Dùng toán tử truy cập có điều kiện (?.) để kiểm tra null gọn hơn:

Customer customer = GetCustomerFromSomewhere();

// Thay vì:
// string city = null;
// if (customer != null && customer.Address != null)
// {
//     city = customer.Address.City;
// }

// Dùng cách này:
string city = customer?.Address?.City;
challenge icon

Thử thách

Dễ

Tạo một phương thức (method) có tên ProcessUserData nhận một tham số chuỗi userData. Phương thức này cần:

  1. Kiểm tra xem userData có null không. Nếu có, in ra "Error: User data is null" rồi trả về.
  2. Kiểm tra xem userData có rỗng không. Nếu có, in ra "Error: User data is empty" rồi trả về.
  3. Nếu dữ liệu hợp lệ, chuyển dữ liệu thành chữ in hoa rồi in ra "Processing: [UPPERCASE_DATA]".

Tự làm thử

using System;

class ProcessUserData
{
    public static void processUserData(string userData)
    {
        // Gợi ý: bạn cần coi chuỗi "null" là giá trị null thực sự
        
        // Viết code của bạn tại đây
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C# online