Hướng Dẫn Chi Tiết Về Việc Tạo Lớp (Class) Trong Lập Trình
1. Khi Nào Nên Tạo Một Class
Các lớp (class) trong lập trình giống như tiêu đề trong một cuốn sách. Chúng cung cấp tóm tắt và giúp người đọc dễ dàng điều hướng nội dung bên trong. Một lớp được đặt tên và xác định rõ ràng sẽ:
- Cung cấp lộ trình cho người đọc trong việc tìm kiếm khái niệm cụ thể.
- Giúp người lập trình viên dễ dàng đọc lướt và hiểu rõ các đoạn mã bên trong.
- Chứa nhiều phương thức (method) có liên quan đến một trách nhiệm duy nhất.
a. Để Mô Hình Hóa Một Đối Tượng
Lớp là công cụ lý tưởng để mô hình hóa cả khái niệm cụ thể lẫn trừu tượng, giúp định danh và thể hiện các hành vi của chúng. Khi phương thức trong lớp ít liên quan với nhau, đó là dấu hiệu của tính gắn kết thấp.
b. Giảm Tính Gắn Kết Thấp
Các lớp có tính gắn kết thấp nên được chia nhỏ thành các lớp với trách nhiệm rõ ràng hơn.
c. Thúc Đẩy Sự Tái Sử Dụng
Việc tạo một lớp riêng cho các đoạn mã hữu ích sẽ giúp giảm độ phức tạp và nâng cao khả năng tái sử dụng trong các chương trình khác.
d. Làm Rõ Thông Số
Lớp có khả năng đơn giản hóa việc truyền thông tin khi liên quan đến các cấu trúc dữ liệu phức tạp bằng cách nhóm các biến liên quan.
3. Tính Gắn Kết (Cohesion)
Tính gắn kết là thước đo mức độ liên quan giữa các trách nhiệm trong một lớp. Các lớp có tính gắn kết cao sẽ dễ đọc hơn và có khả năng tái sử dụng nhiều hơn.
Hãy theo dõi những phương thức không tương tác và các thuộc tính chỉ được sử dụng trong một phương thức duy nhất để giữ cho sự gắn kết được duy trì ở mức cao.
Một Ví Dụ Về Mức Độ Gắn Kết Thấp
Class Vehicle: nếu chứa nhiều phương thức không liên quan, như chỉnh sửa tùy chọn, cập nhật giá, và lịch bảo trì, có thể dẫn đến tính gắn kết thấp.
Giải Pháp: Phân chia thành các lớp riêng biệt như VehicleOptions
, VehicleMaintenance
, VehicleFinance
để nâng cao tính gắn kết.
4. Khi Nào Lớp Quá Nhỏ?
Các lớp quá nhỏ có thể dẫn đến việc hiểu hệ thống trở nên khó khăn. Nếu hai lớp phụ thuộc nhiều vào nhau, có thể hợp nhất chúng thành một lớp duy nhất.
5. Sự Bị Ám Ảnh Với Các Kiểu Dữ Liệu Nguyên Thủy
Lập trình viên dễ phạm phải lỗi khi sử dụng nhiều tham số rời rạc thay vì nhóm chúng trong một lớp để làm rõ các phụ thuộc, giúp bảo trì dễ dàng hơn.
Ví Dụ:
Phiên Bản Không Tốt:
void SaveUser(User user, bool sendEmail, int emailFormat) {}
Phiên Bản Tốt Hơn:
void SaveUser(User user) {}
6. Nguyên Tắc Gần Gũi (Principle of Proximity)
Giữ các chức năng có liên quan gần nhau trong mã nguồn sẽ giúp người đọc dễ dàng theo dõi. Các phương thức gọi lẫn nhau nên được bố trí gần nhau để thuận tiện cho việc đọc.
7. Nguyên Tắc Dàn Ý (Outline Rule)
Một lớp được cấu trúc theo nguyên tắc dàn ý sẽ tăng cường khả năng đọc hiểu, giúp người lập trình viên nhận thức cao hơn về cấu trúc và việc thực hiện mã nguồn.
Cảm ơn bạn đã theo dõi bài viết. Đừng quên để lại đánh giá và hẹn gặp lại trong các bài viết tiếp theo!
source: viblo