Khi chúng tôi lập trình, tất cả chúng tôi đều phát triển các phương pháp và mẫu mà chúng tôi sử dụng và dựa vào. Tuy nhiên, theo thời gian, khi sự hiểu biết, sự trưởng thành và thậm chí cả cách sử dụng công nghệ của chúng ta thay đổi, chúng ta nhận ra rằng một số phương pháp mà chúng ta từng cho là tuyệt vời đã không (hoặc không còn được áp dụng).
Một ví dụ về một thực hành mà tôi đã từng sử dụng khá thường xuyên, nhưng đã thay đổi trong những năm gần đây, đó là việc sử dụng mẫu đối tượng Singleton .
Thông qua kinh nghiệm của bản thân và các cuộc tranh luận lâu dài với các đồng nghiệp, tôi nhận ra rằng các singlelet không phải lúc nào cũng mong muốn - chúng có thể làm cho việc thử nghiệm khó khăn hơn (bằng cách ức chế các kỹ thuật như chế nhạo) và có thể tạo ra sự kết hợp không mong muốn giữa các phần của hệ thống. Thay vào đó, bây giờ tôi sử dụng các nhà máy đối tượng (thường là với một IoC container) để che giấu bản chất và sự tồn tại của các singleton khỏi các phần của hệ thống mà không cần quan tâm - hoặc cần biết. Thay vào đó, họ dựa vào một nhà máy (hoặc bộ định vị dịch vụ) để có được quyền truy cập vào các đối tượng như vậy.
Những câu hỏi của tôi đối với cộng đồng, với tinh thần tự hoàn thiện, là:
- Gần đây bạn đã xem xét lại những mẫu hoặc thực hành lập trình nào và bây giờ cố gắng tránh?
- Bạn đã quyết định thay thế chúng bằng gì?