Chuyển đến nội dung chính

Hiểu Về Bloaters Trong Thiết Kế Phần Mềm

Bloaters trong Thiết Kế Phần Mềm

Trong thiết kế phần mềm, bloaters là các mã nguồn, phương thức, và lớp đã trở nên quá khổ đến mức khó làm việc với chúng. Những vấn đề này không xuất hiện ngay lập tức mà tích tụ dần theo thời gian khi chương trình phát triển, đặc biệt là khi không có nỗ lực để loại bỏ chúng. Dưới đây là các loại bloaters phổ biến và cách nhận diện chúng:

1. Phương Thức Dài (Long Method)

Phương thức dài là những phương thức chứa quá nhiều dòng mã. Thông thường, bất kỳ phương thức nào dài hơn mười dòng mã đều nên khiến bạn phải đặt câu hỏi. Khi một phương thức trở nên quá dài, nó có thể trở thành một thách thức trong việc bảo trì và mở rộng. Để khắc phục, hãy cân nhắc tách phương thức thành các phương thức nhỏ hơn, mỗi phương thức thực hiện một nhiệm vụ cụ thể.

Ví dụ:


public void processOrder(order: Order): void {
    // Xử lý đơn hàng
    // Cập nhật cơ sở dữ liệu
    // Gửi thông báo
    // Tạo báo cáo
    // ...
}
        

2. Lớp Lớn (Large Class)

Lớp lớn là những lớp chứa nhiều trường, phương thức, hoặc dòng mã. Khi một lớp trở nên quá lớn, nó thường có quá nhiều trách nhiệm và trở nên khó quản lý. Để giải quyết vấn đề này, hãy cân nhắc chia lớp thành các lớp nhỏ hơn, mỗi lớp có một nhiệm vụ cụ thể và dễ quản lý hơn.

Ví dụ:


public class OrderManager {
    private order: Order;
    private customer: Customer;
    private database: Database;
    
    public processOrder(): void {
        // Xử lý đơn hàng
    }
    
    public updateCustomerInfo(): void {
        // Cập nhật thông tin khách hàng
    }
    
    // Nhiều phương thức khác
}
        

3. Sự Phụ Thuộc Vào Kiểu Nguyên Thủy (Primitive Obsession)

Sự phụ thuộc vào kiểu nguyên thủy xảy ra khi bạn sử dụng các kiểu dữ liệu nguyên thủy thay vì các đối tượng nhỏ cho các tác vụ đơn giản, như tiền tệ, khoảng giá, hoặc các chuỗi đặc biệt như số điện thoại. Điều này có thể dẫn đến mã nguồn không rõ ràng và khó bảo trì.

Ví dụ:


public class User {
    private role: number;
    
    public static readonly USER_ADMIN_ROLE: number = 1;
    public static readonly USER_MEMBER_ROLE: number = 2;
}
        

4. Danh Sách Tham Số Dài (Long Parameter List)

Danh sách tham số dài xảy ra khi một phương thức nhận nhiều tham số. Thông thường, nếu một phương thức có nhiều hơn ba hoặc bốn tham số, điều này có thể làm giảm khả năng đọc mã và dễ gây lỗi. Để giải quyết, hãy cân nhắc sử dụng các đối tượng để nhóm các tham số liên quan lại với nhau.

Ví dụ:


public void createOrder(customerName: string, address: string, productName: string, quantity: number, price: number): void {
    // Tạo đơn hàng
}
        

5. Nhóm Dữ Liệu (Data Clumps)

Nhóm dữ liệu là khi các phần khác nhau của mã nguồn chứa các nhóm biến giống nhau (như các tham số kết nối cơ sở dữ liệu). Những nhóm dữ liệu này nên được chuyển thành các lớp riêng biệt để dễ quản lý hơn.


public class DatabaseConnection {
    private url: string;
    private user: string;
    private password: string;
}
        

Kết Luận

Bloaters là những vấn đề thiết kế phần mềm phổ biến có thể làm giảm khả năng bảo trì và mở rộng mã nguồn. Nhận diện và khắc phục các vấn đề này thông qua việc tách phương thức, chia lớp, và sử dụng các đối tượng thay vì kiểu nguyên thủy là các bước quan trọng trong việc duy trì mã nguồn sạch và hiệu quả.

Nhận xét