Tôi có thể thấy những lợi ích của các đối tượng có thể thay đổi và bất biến như các đối tượng bất biến lấy đi rất nhiều khó khăn để khắc phục các sự cố trong lập trình đa luồng do trạng thái chia sẻ và có thể ghi. Ngược lại, các đối tượng có thể thay đổi giúp xử lý danh tính của đối tượng thay vì tạo bản sao mới mỗi lần và do đó cũng cải thiện hiệu suất và việc sử dụng bộ nhớ, đặc biệt đối với các đối tượng lớn hơn.
Một điều tôi đang cố gắng hiểu là những gì có thể sai trong việc có các đối tượng có thể thay đổi trong bối cảnh lập trình chức năng. Giống như một trong những điểm được nói với tôi là kết quả của các hàm gọi theo thứ tự khác nhau không mang tính quyết định.
Tôi đang tìm kiếm một ví dụ cụ thể thực sự trong đó rất rõ ràng những gì có thể sai khi sử dụng đối tượng có thể thay đổi trong lập trình hàm. Về cơ bản nếu nó là xấu, nó là xấu bất kể OO hoặc mô hình lập trình chức năng, phải không?
Tôi tin rằng bên dưới tuyên bố của riêng tôi trả lời câu hỏi này. Nhưng tôi vẫn cần một số ví dụ để tôi có thể cảm thấy nó tự nhiên hơn.
OO giúp quản lý sự phụ thuộc và viết chương trình dễ dàng và duy trì hơn với sự trợ giúp của các công cụ như đóng gói, đa hình, v.v.
Lập trình hàm cũng có động cơ thúc đẩy mã duy trì nhưng bằng cách sử dụng kiểu giúp loại bỏ nhu cầu sử dụng các công cụ và kỹ thuật OO - một trong số đó tôi tin là bằng cách giảm thiểu tác dụng phụ, chức năng thuần túy, v.v.