Page 52 - Ký sự code dạo
P. 52
LẬP TRÌNH VIÊN ĐÂU PHẢI CHỈ BIẾT CODE
• Dependency inversion principle
Trong phạm vi bài viết, mình chỉ giới thiệu tổng quát để các bạn có cái
nhìn tổng quan về các nguyên lý này. Mỗi nguyên lý sẽ được giới thiệu
kĩ hơn ở các bài viết sau.
1. Single Responsibility Principle
Nguyên lý đầu tiên, tương ứng với chữ S trong SOLID. Nội dung
nguyên lý:
Một class chỉ nên giữ một trách nhiệm duy nhất (Chỉ có thể
thay đổi class vì một lý do duy nhất)
Để hiểu nguyên lý này, ta hãy lấy ví dụ với 1 class vi phạm nguyên lý.
Ta có 1 class ReportManager như sau:
public class ReportManager()
{
public void ReadDataFromDB();
public void ProcessData();
public void PrintReport();
}
Class này giữ tới 3 trách nhiệm: Đọc dữ liệu từ database, xử lý dữ liệu,
in kết quả. Do đó, chỉ cần ta thay đổi database hoặc thay đổi cách xuất
kết quả, … ta sẽ phải sửa đổi class này. Càng về sau class sẽ càng phình
to ra.
Theo đúng nguyên lý, ta phải tách class này ra làm 3 class riêng. Tuy
số lượng class nhiều hơn những việc sửa chữa sẽ đơn giản hơn, class
ngắn hơn nên cũng ít bug hơn.
2. Open/Closed Principle
Nguyên lý thứ hai, tương ứng với chữ O trong SOLID. Nội dung nguyên
lý:
Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi
bên trong class đó (open for extension but closed for
modification).
Theo nguyên lý này, mỗi khi ta muốn thêm chức năng,.. cho chương
trình, chúng ta nên viết class mới mở rộng class cũ (bằng cách kế thừa
hoặc sở hữu class cũ) không nên sửa đổi class cũ.
50