Việc chuyển đối tượng hiện tại trong một lệnh gọi phương thức là một thực tế không tốt nếu có các lựa chọn thay thế ít phức tạp hơn để đạt được cùng một hành vi.
Theo định nghĩa, liên kết hai chiều được tạo ngay sau khi thisđược truyền từ đối tượng này sang đối tượng khác.
Để trích dẫn Refactoring, bởi Martin Fowler:
Thay đổi kết hợp hai chiều thành một chiều (200)
Các liên kết hai chiều rất hữu ích, nhưng chúng có giá. Cái giá phải trả là sự phức tạp tăng thêm của việc duy trì các liên kết hai chiều và đảm bảo rằng các đối tượng được tạo và xóa đúng cách. Các liên kết hai chiều không phải tự nhiên đối với nhiều lập trình viên, vì vậy chúng thường là nguồn gây ra lỗi
...
Bạn nên sử dụng liên kết hai chiều khi cần nhưng không phải khi không. Ngay khi bạn thấy liên kết hai chiều không còn kéo trọng lượng của nó nữa, hãy bỏ phần cuối không cần thiết.
Vì vậy, về mặt lý thuyết, chúng ta nên nghe thấy tiếng chuông cảnh báo khi chúng ta thấy mình cần phải vượt qua thisvà cố gắng thực sự để nghĩ ra những cách khác để giải quyết vấn đề trong tầm tay. Tất nhiên, có những lúc, cuối cùng, bạn nên làm điều đó.
Ngoài ra, bạn thường phải tạm thời làm hỏng thiết kế của mình, thực hiện 'những việc làm xấu', trong thời gian dài hạn tái cấu trúc mã của bạn để cải thiện tổng thể. (Lùi một bước, tiến hai bước).
Trong thực tế, tôi nhận thấy mã của mình đã được cải thiện hàng loạt bằng cách tránh các liên kết hai chiều như bệnh dịch.