Ghen tị với tính năng là một thuật ngữ được sử dụng để mô tả một tình huống trong đó một đối tượng nhận được tại các trường của đối tượng khác để thực hiện một số tính toán hoặc đưa ra quyết định, thay vì yêu cầu đối tượng tự thực hiện tính toán.
Như một ví dụ tầm thường, hãy xem xét một lớp đại diện cho một hình chữ nhật. Người sử dụng hình chữ nhật có thể cần biết khu vực của nó. Lập trình viên có thể phơi bày width
và height
các trường và sau đó thực hiện tính toán bên ngoài Rectangle
lớp. Ngoài ra, Rectangle
có thể giữ width
và height
các trường riêng tư và cung cấp một getArea
phương thức. Đây được cho là một cách tiếp cận tốt hơn.
Vấn đề với tình huống đầu tiên, và lý do nó được coi là mùi mã, là vì nó phá vỡ đóng gói.
Theo nguyên tắc thông thường, bất cứ khi nào bạn thấy mình sử dụng rộng rãi các trường từ một lớp khác để thực hiện bất kỳ loại logic hoặc tính toán nào, hãy xem xét chuyển logic đó sang một phương thức trên chính lớp đó.