Chào mừng bạn đến với bài viết đầu tiên trong chuỗi những bài viết về design pattern. Trong bài viết này, chúng ta sẽ tìm hiểu về quá trình phát triển từ một coder đến một developer.
Nhập đề
Có một câu nói rằng con đường tu chân có 3 cảnh giới: Luyện khí, Trúc cơ và Kết đan. Tương tự, con đường trở thành một nhà phát triển cũng có 3 cảnh giới: Học đồ (Junior Developer), Học sĩ (Developer), Đại sư (Senior Developer). Để đi vào cảnh giới cao nhất của những người đi code, bạn cần nắm vững vài Design Pattern cơ bản. Bài viết này sẽ chia sẻ với bạn những thông tin hữu ích trên con đường truy cầu đại đạo.
Nhiều người khi đạt đến cảnh giới Đại sư (Senior) tự hào rằng họ đã đạt đến đỉnh cao của võ học, mà không biết rằng "Thiên ngoại hữu thiên, nhân ngoại hữu nhân". Trên đỉnh cao của cảnh giới Đại sư vẫn còn tồn tại nhiều cao thủ khác như Chưởng Môn (Project Manager) hoặc Tông sư (Software Architect). Những cao thủ này hiếm như lông hồng trâu trắng, có võ công cao cường và thu nhập khủng. Cấp bậc của chúng tôi vẫn còn quá thấp, chúng tôi không thể thảo luận về điều này. Nếu bạn quan tâm, bạn có thể tìm hiểu thêm tại đây.
Hỏi thế gian DS là chi, mà bọn Dev thề nguyền sống chết
Một cách đơn giản, design pattern là các mẫu thiết kế được sử dụng để giải quyết một vấn đề. Sử dụng design pattern sẽ làm cho code dễ bảo trì và mở rộng hơn. Design pattern là tinh hoa trong võ học, đã được các võ sư đúc kết và truyền lưu từ đời này qua đời khác. Design pattern là thiết kế dựa trên code, nó nằm ở một cấp độ cao hơn CODE, do đó bất kỳ ai trong cộng đồng lập trình (C#, Java, Python) cũng có thể áp dụng được. Hình ảnh dưới đây lấy từ bộ sách Head First Design Pattern (xem phía dưới).
Trước khi học võ, các võ sư luôn dặn học trò rằng học võ là để tu thân hành hiệp giúp đời, không phải để dùng sức mạnh để bắt nạt kẻ yếu. Tương tự, học design pattern cũng để nâng cao trình độ và giải quyết vấn đề, không để tỏ ra trước mặt mọi người. Nhiều người học nghệ thuật này mà không hiểu rõ, nhồi nhét design pattern vào dự án một cách vô tội vạ. Kết quả là võ công yếu kém hoặc là gây rối và trở nên rắc rối. Hãy nhìn những kẻ tham lam và không biết kiềm chế.
Design Pattern Kiếm Phổ
Bí kíp võ công đầu tiên mà chúng ta sẽ nhắc đến là "Design Patterns: Elements of Reusable Object-Oriented Software". Tuy nhiên, sách này khá khô khan và khó hiểu, do đó các võ sư đã chỉnh sửa và xuất bản hai cuốn sách dễ hiểu hơn là "Head First Design Patterns" và "Design Patterns For Dummies". Lúc trước, khi bước chân vào con đường lập trình, chúng tôi đã tu luyện từ hai quyển sách này. Bạn có thể tải về và nghiên cứu thêm.
Khẩu Quyết Nhập Môn Design Pattern
Có rất nhiều chiêu thức design pattern trong giang hồ, nhưng chúng ta có thể tạm phân loại thành ba loại: Khởi Thức (Creational Design Pattern), Cấu Thức (Structural Design Pattern) và Vi Thức (Behavioral Design Pattern).
- Khởi Thức liên quan đến việc khởi tạo đối tượng. Ví dụ: Factory, Object Pool, Abstract Factory, Builder.
- Cấu Thức liên quan đến cấu trúc và mối quan hệ giữa các đối tượng. Ví dụ: Adapter, Bridge, Decorator, Proxy, Composite, Facede.
- Vi Thức liên quan đến hành vi của các đối tượng. Ví dụ: Iterator, Mementor, Strategy, Template Method, Visitor.
Một khẩu quyết của một chiêu thức design pattern thường bao gồm 3 phần. Khi bạn muốn học một design pattern mới, hãy tập trung vào 3 phần này:
- Thức Đề: Vấn đề mà design pattern giải quyết.
- Thức Đồ: Sơ đồ UML mô tả design pattern.
- Thức Phổ: Mã nguồn minh họa.
Dưới đây là một design pattern đơn giản mà hầu hết các lập trình viên đều biết: Đơn Thân Độc Mã, thuộc Khởi Thức hay còn gọi là Singleton, thuộc loại Creational Design Pattern.
- Thức Đề: Design Pattern này được sử dụng khi chúng ta muốn đảm bảo chỉ có một đối tượng duy nhất được tạo ra trong toàn hệ thống.
- Thức Đồ:
- Thức Phổ:
Thay lời kết
Xin nhắc lại một lần nữa: Design Pattern được tạo ra để giải quyết vấn đề, không phải làm cho nó trở nên phức tạp. Có một câu rằng "nước có thể dâng thuyền, cũng có thể lật thuyền". Design Pattern có thể giúp giải quyết vấn đề, nhưng cũng có thể làm nó trở nên rắc rối hơn.
Các lập trình viên thường chia thành ba cấp độ khi sử dụng design pattern. Người mới học sẽ nhìn thấy mọi thứ đều là pattern và áp dụng chúng một cách tùy tiện. Khi họ trở thành cao thủ, họ sẽ biết khi nào cần sử dụng pattern và khi nào không cần. Và khi họ trở thành đại sư, họ chỉ sử dụng pattern khi họ thực sự hiểu được lợi ích mà nó mang lại và biết cách sử dụng một cách tinh tế. Quá trình này có thể được tổng kết bằng một câu:
"Khi chưa học đạo, ta thấy núi là núi, sông là sông. Khi mới học đạo, ta thấy núi không phải là núi, sông không phải là sông. Sau khi học đạo, ta lại thấy núi chỉ là núi, sông chỉ là sông."
Đây là bài viết đầu tiên trong chuỗi những bài viết về design pattern trên blog. Bài viết này được viết theo phong cách kiếm hiệp để thu hút bạn đọc. Những bài viết sau trong chuỗi sẽ quay lại phong cách bình thường. Viết theo phong cách này đòi hỏi tối ưu nhiều tế bào não, đôi khi tác giả có thể trở nên phi phàm hoặc điên cuồng. Nếu bạn thích bài viết này, bạn có thể đọc thêm bài viết về comment code.
Ngoài ebook, bạn có thể tìm hiểu thêm về design pattern tại các nguồn sau:
Quảng cáo 30 giây
Đây là một đoạn trích từ cuốn sách "Code dạo kí sự - Lập trình viên đâu phải chỉ biết code" do tác giả viết. Quyển sách bao gồm những kỹ năng từ mềm đến cứng mà mỗi nhà phát triển cần có, chắc chắn sẽ hữu ích cho sinh viên hoặc những lập trình viên đã đi làm. Bạn có thể xem thông tin và đặt mua sách tại đây: Sách Code Dạo Ký Sự.
And that's it! Thank you for reading.