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
   47   48   49   50   51   52   53   54   55   56   57