Đây là câu hỏi mở, nhưng tôi muốn thu hút một số ý kiến từ cộng đồng SO về Đặc điểm; Bạn có nghĩ rằng Traits trong Squeak/Pharo là một điều tốt, hay bạn nên tránh xa họ và sử dụng thành phần và đoàn đại biểu để thay thế? Tôi hỏi bởi vì trong khi tôi biết cách sử dụng chúng (nhờ vào cuốn sách Pharo), tôi không thực sự chắc chắn nó có thể chấp nhận được hay không, hoặc sử dụng chúng ở đâu và nó không ở đâu.Có đặc điểm tốt hay xấu?
Trả lời
Tôi không thích các đặc điểm vì chúng giới thiệu các phụ thuộc mạnh vào mã. Những phụ thuộc này có thể được hiển nhiên (một lớp nhập khẩu một đặc điểm, một đặc điểm mà mong đợi các phương thức), nhưng cũng rất tinh tế (một đặc điểm làm bóng các phương thức siêu/các biến mẫu). Hơn nữa không có công cụ hỗ trợ đầy đủ cho các đặc điểm.
Theo kinh nghiệm của tôi, ủy quyền mang lại một thiết kế tốt hơn và có thể tái sử dụng nhiều hơn trong ngôn ngữ hướng đối tượng động như Smalltalk.
Mọi thứ đều có ưu và khuyết điểm của họ. Lukas đúng đề cập đến nhiều nhược điểm:
- Giới thiệu phụ thuộc mạnh mẽ vào mã.
- không hỗ trợ công cụ thích hợp.
Trong khi giây thứ hai có thể biến mất vào một ngày nào đó, ngày đầu tiên sẽ không hoạt động.
Mục đích của các đặc điểm là ngăn chặn trùng lặp mã xảy ra, khi hai lớp không chia sẻ một siêu lớp khác với đối tượng, chia sẻ một phương pháp thể hiện. Bây giờ, đôi khi phái đoàn có thể sửa chữa điều đó, nhưng đôi khi nó không thể. Vì vậy, tính chuyên nghiệp của các đặc điểm là:
- Sao chép mã bị giảm.
phán quyết của tôi ở đây là những bất lợi quá lớn. Tôi nghĩ rằng, ngày nay và mãi mãi, việc sao chép mã chắc chắn sẽ xảy ra. Và khi phái đoàn sẽ không làm, tôi thậm chí có thể tưởng tượng rằng sao chép mã không phải là tất cả những gì có hại, vì nó thường đi trước sự phát triển khác nhau của đoạn mã được sao chép.