Design Patterns

Design Patterns, lập trình viên cần phải biết.

Trong cty mình làm chỉ có 1 vài cá nhân chịu khó tìm hiểu vấn đề này còn lại hầu như không ai quan tâm và nhìn nó với ánh mắt chẳng ra gì. Thật đáng buồn!


Đang nghiền ngẫm thật kĩ các Design Patterns, lang thang trên google tìm được bài viết này, thấy cũng khá thú vị nên post lên cho bà con ngắm nghía, thư giãn và quan trọng hơn là để mọi người thấy được tầm quan trọng của nó trong việc thiết kế phát triển phần mềm. Một lập trình viên đúng nghĩa phải biết những vấn đề này, nếu không cshúng ta mãi là những thợ code tồi.

Có 2 cuốn sách về vấn đề này mình rất tâm đắc:

1. Design Patterns: Elements of Resuable Object-Oriented Software.

2. Head First Design Patterns.

Nếu ai quan tâm thì mình có thể cho mượn photo, còn ebook thì mọi người có thể dùng Emule hay vào gigapedia.com để search.

Thợ hồ tin học và các mẫu dáng thiết kế.

Tâm… đa sự của một lập trình viên.

Có người ví ngành tin học, hay nói “dông dài” hơn là công nghệ thông tin, giống như ngành xây dựng: muốn tạo ra hệ thống nào đó, cần có “kiến trúc sư” và… “thợ hồ”, tức những người thiết kế hệ thống và những người viết nên mã chương trình cụ thể. Theo tiêu chí này, dường như số đông sinh viên tin học tốt nghiệp sẽ làm… “thợ hồ” (thợ dĩ nhiên phải cần nhiều hơn thầy). Công việc “kiến trúc sư” có lẽ phải dành cho các bậc “sồn sồn” dày dạn kinh nghiệm trận mạc.

Quả quyết rằng người Việt có năng khiếu tin học bẩm sinh (không rõ tôi “tiêm nhiễm” điều này từ bao giờ), tôi hăm hở lao vào tin học. Thế rồi đúng như số mệnh mà ai cũng biết rõ mười mươi: tôi trở thành… “thợ hồ”! Quả thực, công việc thường chỉ là gắn lại với nhau những “viên gạch” có sẵn mà người ta gọi là các thành phần (component). Ngày ngày tôi lầm lũi xây những bức tường, có khi chẳng thấy ngôi nhà hay cao ốc nó ra sao.

Tuy nhiên, cái chân “thợ hồ” của tôi xem ra cũng không dễ dàng chút nào! Nếu như thợ hồ trong xây dựng có thể về nhà ngủ khò sau một ngày làm việc (tôi ghen với họ!), tôi luôn phải loay hoay tìm đọc sách này, sách kia, thức đêm thức hôm để tiêu hóa một cách khó nhọc những kiến thức mới mẻ cứ nảy sinh đều đều (giờ đây tôi thường tự nhủ: người mình chắc chắn thông minh… bằng người ta!).

Một trong những thứ khó nuốt (đối với tôi) kêu bằng design pattern. Khái niệm này trở nên thịnh hành từ khi xuất hiện quyển sách “đáng ghét”, từng làm xôn xao giới lập trình, mang tên Design Patterns: Elements of Reusable Object-Oriented Software của bốn tác giả Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides. Bên Mỹ người ta gọi đùa họ là “bè lũ bốn tên” (Gang of Four). “Bè lũ” này làm cho đời sống của cánh “thợ hồ” như tôi thêm vất vả nhưng có lẽ cũng vì thế mà quyển sách nổi tiếng của họ được đưa vào… chương trình đại học.(*)

Decorator, Iterator, Mediator,…

Bạn có thấy dòng chữ nêu trên giống câu thần chú kiểu trong… Harry Potter không? Lần đầu tiên, tôi đụng phải một cái design pattern (thường gọi ngắn gọn là pattern) là khi người ta gửi cho tôi một bản vẽ (thế đấy, làm “thợ hồ” vẫn phải đọc bản vẽ) và yêu cầu tôi thực hiện một decorator ở chỗ “được khoanh tròn”. Vờ như đã hiểu, tôi “không thèm” hỏi lại xem decorator là cái giống gì. Từ đó, tôi bắt đầu để ý những đồng nghiệp thường xuyên nói chuyện với nhau bằng những từ lạ lùng hơn, nào là iterator, rồi mediator,… Dường như họ muốn chứng tỏ mình sành điệu thì phải.

Học thầy không tày học bạn, tôi đem chuyện bí hiểm ấy kể với một người bạn học cũ. Anh nói ngay: “Mấy thứ đó gọi chung là pattern! Cũng chẳng có gì, đại khái nó là những data structure (cấu trúc dữ liệu) thôi mà”. Có thật vậy chăng? Hình như anh cũng hiểu… đại khái như thế thôi vì anh không thể giải thích cho tôi rõ tại sao người ta “bịa” ra các tên mới để làm gì.

Thật may, cuối cùng một vị tiền bối trong ngành tin học nói cho tôi biết design pattern có thể dịch là mẫu dáng thiết kế. Nó không phải là… cấu trúc dữ liệu (nhầm lẫn tai hại!). Mỗi một mẫu dáng không phải là vật liệu để dùng ngay (khổ thật, tôi đã quen với “tư duy lắp ráp”) mà là một giải pháp kiến trúc hợp lý và hiệu quả, từng được kiểm nghiệm nhiều trong thực tế, do đó có tính phổ quát và tính ứng dụng cao. Tôi rất tâm đắc với thuật ngữ “mẫu dáng” mới toanh để dịch nghĩa cho pattern hơn là cách gọi “mẫu mực” hay “mẫu hình” (theo từ điển) vì từ “dáng” bao hàm sự uyển chuyển, tính linh hoạt, đòi hỏi người ta phải cảm nhận, hiểu biết sâu sắc để vận dụng, không thể sao chép rập khuôn. Mẫu dáng ở đâu ra?

Hóa ra thuật ngữ design pattern lại xuất phát từ ngành xây dựng, do kiến trúc sư!

sưu tầm

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: