gbvn1
Senior Member
Lý thuyết về OOP Design Patterns vô cùng phổ biến trong ngành dev. Kể cả 1 thằng chưa từng học qua như mình khi review lại cũng phát hiện bản thân thường sử dụng khoảng 30% Design Patterns một cách tự nhiên mà ko hề hay biết. Vậy thì theo bạn sinh viên IT có nên học Design Patterns?
Cá nhân mình câu trả lời là không, có thể đọc sơ qua để tham khảo nhưng ko nên học nhớ quá sâu.
Lý do:
- Ảnh hưởng tới tư duy sáng tạo: Thay vì tập trung suy nghĩ để giải quyết các vấn đề, sau đó tạo ra bản design thích hợp dựa trên các yếu tố liên quan đến sản phẩm, bạn sẽ bị ảnh hưởng bởi các khuôn mẫu trong design pattern, thậm chí cố gắng suy nghĩ để đưa các design patterns vào trong thiết kế.
- Thường tạo ra sự dư thừa không cần thiết (Over-Engineering/Abstraction) nhưng nhiều khi cần thì lại thiếu: Rất nhiều tính năng của sản phẩm là unique, những tính năng như vậy phần lớn đều dẫn đến hiện tượng thừa-thiếu khi đưa vào design patterns. Ví dụ như bạn cần phải tạo ra 1 đống interface cho 1 class vô cùng đơn giản, rồi khi cần có sự thay đổi trong thiết kế thì cũng phải thay cả 1 đống mất thời gian gấp 5-10 lần so với bình thường.
- Fresher/Junior thường không đủ kinh nghiệm để sử dụng design patterns 1 cách hợp lý: nhưng vẫn cố sử dụng và kết quả thường là copy-paste hoặc 1 đống bùi nhùi.
- DP khiến thinkflow bị branching/corrupt nhiều hơn: branching sẽ nhanh chóng tạo ra sự mệt mỏi cho não. Trong khi rule (simple, minimal, flexible) tựa như memcached có thể truy xuất gần như zero cost để phục vụ cho việc thiết kế thì việc lựa chọn giữa phương án A, B, C giống như là inefficiently memory use.
- DP là khái niệm trừu tượng: chính vì trừu tượng nó sẽ khiến bạn bị hấp dẫn và suy nghĩ về nó khá nhiều. Trong khi sự cần thiết và tính thực dụng của nó trên effort bỏ ra thường là rất thấp. Kể cả good case là nó phù hợp và bạn nghĩ chỉ apply vào là xong nhưng thực tế khi đưa vào vẫn phải tốn nhiều năng lượng não.
--------
Cá nhân mình câu trả lời là không, có thể đọc sơ qua để tham khảo nhưng ko nên học nhớ quá sâu.
Lý do:
- Ảnh hưởng tới tư duy sáng tạo: Thay vì tập trung suy nghĩ để giải quyết các vấn đề, sau đó tạo ra bản design thích hợp dựa trên các yếu tố liên quan đến sản phẩm, bạn sẽ bị ảnh hưởng bởi các khuôn mẫu trong design pattern, thậm chí cố gắng suy nghĩ để đưa các design patterns vào trong thiết kế.
- Thường tạo ra sự dư thừa không cần thiết (Over-Engineering/Abstraction) nhưng nhiều khi cần thì lại thiếu: Rất nhiều tính năng của sản phẩm là unique, những tính năng như vậy phần lớn đều dẫn đến hiện tượng thừa-thiếu khi đưa vào design patterns. Ví dụ như bạn cần phải tạo ra 1 đống interface cho 1 class vô cùng đơn giản, rồi khi cần có sự thay đổi trong thiết kế thì cũng phải thay cả 1 đống mất thời gian gấp 5-10 lần so với bình thường.
- Fresher/Junior thường không đủ kinh nghiệm để sử dụng design patterns 1 cách hợp lý: nhưng vẫn cố sử dụng và kết quả thường là copy-paste hoặc 1 đống bùi nhùi.
- DP khiến thinkflow bị branching/corrupt nhiều hơn: branching sẽ nhanh chóng tạo ra sự mệt mỏi cho não. Trong khi rule (simple, minimal, flexible) tựa như memcached có thể truy xuất gần như zero cost để phục vụ cho việc thiết kế thì việc lựa chọn giữa phương án A, B, C giống như là inefficiently memory use.
- DP là khái niệm trừu tượng: chính vì trừu tượng nó sẽ khiến bạn bị hấp dẫn và suy nghĩ về nó khá nhiều. Trong khi sự cần thiết và tính thực dụng của nó trên effort bỏ ra thường là rất thấp. Kể cả good case là nó phù hợp và bạn nghĩ chỉ apply vào là xong nhưng thực tế khi đưa vào vẫn phải tốn nhiều năng lượng não.
--------
Last edited: