2012-06-05 31 views
8

Phải có tên khi mọi người cố gắng lạm dụng các mẫu thiết kế. Tôi biết về các điều khoản anti-patternscode-smell (trong số những người khác), nhưng họ dường như không áp dụng cho tình huống này. Nếu tôi hiểu sai, tôi nghĩ rằng các mô hình khá hữu ích và mạnh mẽ, nhưng quá nhiều lần tôi thấy các câu hỏi và mã mà mọi người dường như cố ép buộc sử dụng một mẫu chỉ để nói rằng họ đã sử dụng một mẫu. Thường xuyên hơn không đơn giản là cách tốt nhất tuyệt đối để đi.Nó được gọi là gì khi mọi người cố gắng lạm dụng các mẫu thiết kế?

Tôi đã thực hiện tìm kiếm và chỉ đưa ra điều này: When are design patterns the problem instead of the solution? mà tôi thấy thú vị, nhưng không hoàn toàn đồng ý với.

Nếu thẻ không tồn tại trên Stack Overflow, ít nhất tôi cũng muốn giữ quyền tạo nó. Nó không phải là thường xuyên đến nỗi bạn có thể tạo ra một thẻ mới :)

Một số ý tưởng về những gì nó có thể được gọi sau:

  • qua patternizing
  • qua patternized
  • thiết kế mô hình quá liều
+2

Thuộc về [Programmers.SE]. –

+0

@ PéterTörök, có lẽ bạn nói đúng, nhưng câu hỏi có vẻ phù hợp với câu hỏi mà tôi đã tham chiếu, không được gắn cờ. Im không thực sự rõ ràng về sự khác biệt. – Brady

+0

Không có nghĩa là chỉ trích, chỉ để chỉ ra thực tiễn hiện tại trên StackExchange. Câu hỏi mà bạn đề cập là một câu hỏi cũ, trước khi Programmers.SE xuất hiện. –

Trả lời

4

Tôi muốn gọi quá tải này - cũng không cần chỉ là mẫu.

Sử dụng nguyên tắc KISS (như bạn lưu ý).

+1

Nguyên tắc KISS là gì? Tôi e rằng sẽ trả lại rất nhiều lượt truy cập trên google – Brady

+3

Giữ nó đơn giản ngu ngốc :) - http://en.wikipedia.org/wiki/KISS_principle – jglouie

+0

Ahh đúng, cảm ơn. – Brady

8

Tôi tin rằng bạn đang đề cập đến Cargo cult programming:

[...] là một phong cách lập trình máy tính được đặc trưng bởi các nghi lễ bao gồm của mã hoặc chương trình cấu trúc mà không phục vụ mục đích thực sự. Lập trình giáo phái hàng hóa thường có triệu chứng của một lập trình viên không hiểu được một lỗi mà người đó đang cố giải quyết hoặc giải pháp rõ ràng (so sánh shotgun debugging, voodoo programming). Thuật ngữ lập trình hàng hóa cũng có thể áp dụng khi một lập trình viên không có kỹ năng hoặc mới làm quen (hoặc không có kinh nghiệm về vấn đề này) sao chép một số mã chương trình từ một nơi và dán nó vào một nơi khác, với rất ít hoặc không hiểu cách mã hoạt động hoặc liệu nó có được yêu cầu ở vị trí mới của nó hay không.

Hoặc bạn có thể chỉ cần nói: overengineering.

+4

Lập trình sùng bái hàng hóa IMHO là hiện tượng mức thấp hơn nhiều, thường liên quan đến việc sao chép một cách mù quáng mã từ nhiều nguồn khác nhau mà không thực sự hiểu cách hoạt động của nó. Trong khi việc lạm dụng các mẫu thiết kế là hoạt động ở mức cao hơn, thường không bao gồm sao chép + dán, chỉ tạo nội dung và tác giả của nó có thể giải thích chi tiết về cách thức hữu ích (thường là trong tương lai tưởng tượng, sẽ không bao giờ xảy ra) . –

+1

@ PéterTörök: đồng ý, tôi nghĩ rằng "* giao diện ở mọi nơi *" và "* tài liệu/nhận xét mỗi dòng mã *" là những hóa thân điển hình của lập trình giáo phái hàng hóa. Tuy nhiên, đẩy * Chiến lược * chỉ vì bạn có một 'if' hoặc sử dụng một nhà máy cho tất cả mọi thứ cũng là một ví dụ về giáo phái hàng hóa, IMHO. –

2

Có một bài đăng blog tuyệt vời về nhiều giai đoạn của việc sử dụng các mẫu thiết kế. Tôi sẽ mô tả những gì bạn đang trải qua là kết quả của việc sử dụng quá mức một mô hình. Các nhà phát triển có thể đã học được một mẫu thiết kế mới và không bao giờ nhấn vào việc sử dụng chủ của mẫu đó. Nó không phải là không phổ biến cho mọi người để thử và buộc các mẫu họ không thực sự hiểu.

Xem this article để có giải thích tốt về những gì anh chàng này gọi là 4 giai đoạn học mẫu thiết kế.

Các vấn đề liên quan