Bất cứ khi nào tôi nghe về Anti-samples, tôi nhớ lại một thuật ngữ khác. Thiết kế mùi.
"Mùi thiết kế là một số cấu trúc nhất định trong thiết kế cho thấy sự vi phạm các nguyên tắc thiết kế cơ bản và ảnh hưởng tiêu cực đến chất lượng thiết kế. (Từ" Tái cấu trúc cho mùi thiết kế phần mềm: Quản lý nợ kỹ thuật ")
Có nhiều mùi thiết kế được phân loại dựa trên các nguyên tắc thiết kế vi phạm:
Mùi trừu tượng
Thiếu trừu tượng: Mùi này phát sinh khi các cụm dữ liệu hoặc chuỗi được mã hóa được sử dụng thay vì tạo một lớp hoặc một giao diện.
Trừu tượng bắt buộc: Mùi này phát sinh khi một hoạt động được chuyển thành một lớp.
Trừu tượng không đầy đủ: Mùi này phát sinh khi một sự trừu tượng không hỗ trợ hoàn toàn các phương pháp bổ sung hoặc liên quan đến nhau.
Trừu tượng nhiều mặt: Mùi này phát sinh khi một trừu tượng có nhiều hơn một trách nhiệm được giao cho nó.
Trừu tượng không cần thiết: Mùi này xảy ra khi một sự trừu tượng thực sự không cần thiết (và do đó có thể tránh được) được giới thiệu trong một thiết kế phần mềm.
Trừu tượng không được sử dụng : Mùi này phát sinh khi một sự trừu tượng không được sử dụng (không được sử dụng trực tiếp hoặc không thể tiếp cận).
Trừu tượng trùng lặp: Mùi này phát sinh khi hai hoặc nhiều trừu tượng có tên giống nhau hoặc thực hiện giống hệt nhau hoặc cả hai.
Mùi đóng gói
Thiếu đóng gói: Mùi này xảy ra khi khả năng tiếp cận được tuyên bố của một hoặc nhiều thành viên trừu tượng được cho phép nhiều hơn so với yêu cầu thực sự.
Leaky Encapsulation: Mùi này phát sinh khi một bản tóm tắt, lộ ra các chi tiết triển khai trên truyền hình trực tuyến và thông tin công khai thông qua giao diện công cộng.
Thiếu đóng gói: Mùi này xảy ra khi các biến thể thực hiện không được gói gọn trong một sự trừu tượng hoặc phân cấp.
Đóng gói chưa được khai thác: Mùi này phát sinh khi mã máy khách sử dụng kiểm tra loại rõ ràng (sử dụng các câu lệnh if-other hoặc switch để kiểm tra loại đối tượng) thay vì khai thác biến thể trong các loại đã được gói gọn trong một hệ thống phân cấp.
Modularization mùi
Mô-đun bị hỏng: Mùi này phát sinh khi dữ liệu và / hoặc phương pháp lý tưởng nên được định vị thành một trừu tượng duy nhất được tách ra và trải rộng trên nhiều trừu tượng.
Modularization không đủ: Mùi này phát sinh khi một sự trừu tượng tồn tại chưa được phân hủy hoàn toàn, và một sự phân hủy tiếp theo có thể làm giảm kích thước của nó, độ phức tạp thực hiện hoặc cả hai.
Modularization phụ thuộc theo chu kỳ: Mùi này phát sinh khi hai hoặc nhiều trừu tượng phụ thuộc lẫn nhau trực tiếp hoặc gián tiếp (tạo ra một khớp nối chặt chẽ giữa các trừu tượng).
Modularization giống như Hub: Mùi này phát sinh khi một sự trừu tượng có sự phụ thuộc (cả đến và đi) với một số lượng lớn các trừu tượng khác.
Phân cấp mùi
Thiếu phân cấp: Mùi này phát sinh khi một đoạn mã sử dụng logic có điều kiện (thường kết hợp với các loại được gắn thẻ của LINE) để quản lý rõ ràng sự thay đổi trong hành vi trong đó hệ thống phân cấp có thể được tạo và sử dụng để đóng gói các biến thể đó.
Phân cấp không cần thiết: Mùi này phát sinh khi toàn bộ hệ thống phân cấp thừa kế là không cần thiết, cho thấy rằng kế thừa đã được áp dụng không cần thiết cho bối cảnh thiết kế cụ thể.
Phân cấp không được bảo vệ: Mùi này phát sinh khi có sự trùng lặp không cần thiết giữa các loại trong một hệ thống phân cấp.
Phân cấp rộng: Mùi này phát sinh khi một hệ thống phân cấp thừa kế là quá rộng quá chỉ ra rằng các loại trung gian có thể bị thiếu.
Phân cấp đầu cơ: Mùi này phát sinh khi một hoặc nhiều loại trong hệ thống phân cấp được cung cấp theo suy đoán (nghĩa là dựa trên nhu cầu tưởng tượng thay vì yêu cầu thực tế).
Phân cấp sâu: Mùi này phát sinh khi một hệ thống phân cấp thừa kế là sâu quá mức.
Phân cấp nổi loạn: Mùi này phát sinh khi một kiểu con từ chối các phương thức được cung cấp bởi (các) siêu kiểu của nó.
Hệ thống phân cấp bị hỏng: Mùi này phát sinh khi một siêu kiểu và phân nhóm của nó về mặt khái niệm không chia sẻ mối quan hệ IS IS-A khác dẫn đến khả năng thay thế bị phá vỡ.
Phân cấp đa đường: Mùi này phát sinh khi một kiểu con kế thừa cả trực tiếp cũng như gián tiếp từ một siêu kiểu dẫn đến các đường dẫn thừa kế không cần thiết trong cấu trúc phân cấp.
Phân cấp theo chu kỳ: Mùi này phát sinh khi một siêu kiểu trong hệ thống phân cấp phụ thuộc vào bất kỳ phân nhóm nào của nó.
Định nghĩa và phân loại ở trên được mô tả trong "Tái cấu trúc cho thiết kế phần mềm có mùi: Quản lý nợ kỹ thuật ". Một số tài nguyên có liên quan hơn có thể được tìm thấy ở đây .