Để đơn giản, bạn không quấn đồ vật vào đối tượng, bạn trực tiếp lập trình với cấu trúc dữ liệu như danh sách, bộ và bản đồ. Vì vậy, công việc đã được thực hiện ORM bị giảm để chuyển đổi cấu trúc dữ liệu sang cấu trúc dữ liệu khác: ví dụ: chức năng user-row->user-record
có thể chuyển đổi danh sách giá trị mà bạn bật từ cơ sở dữ liệu SQL sang bản đồ đại diện cho người dùng trong logic nghiệp vụ của ứng dụng. Khi bạn lưu người dùng, bạn phải gọi một hàm đảo ngược.
Tôi phải nói rằng nó thực sự là khó khăn cho một lập trình viên có kinh nghiệm OOP để kinda "có được" thực tế là có ít lễ hơn xung quanh công cụ.Bộ não của chúng ta dường như chống lại ý tưởng này - IMHO vì nó có vẻ quá đơn giản và chưa trưởng thành đối với một kiến trúc sư phát triển/phần mềm có kinh nghiệm. :-) Tôi ước tôi có thể viết những câu trả lời phức tạp hơn với những thuật ngữ kỳ lạ để nghe như một chuyên gia thực sự, nhưng tôi thực sự không thể, bởi vì không có nhiều thứ để thêm vào. :-)
Nhân tiện, một điểm nhỏ nhưng thú vị - việc sử dụng phổ biến cấu trúc dữ liệu là một thực tiễn được coi là sai trong thế giới OOP. Ví dụ bạn không nên lưu trữ tiền trong một tuple đơn giản [10, "USD"]
nhưng thay vì viết đầy đủ public class Money
mà sẽ đóng gói tất cả các loại tiền tệ, so sánh, làm tròn vv Nhưng viết tuples là chính xác những gì chúng tôi làm trong FP. Tôi nhớ tôi có một số cảm giác kỳ lạ về điều này đến từ thế giới OOP.
Khi nói đến tổ chức mã của bạn nhiều hơn hoặc ít hơn các quy tắc tương tự như trong OOP áp dụng về không gian tên. Bạn tổ chức mã dựa trên chủ đề như bạn sẽ làm trong các gói java, ngoại trừ tất cả các hàm (mà bạn đã sử dụng để gọi các phương thức) hiện không trạng thái và thường lấy những thứ như hồ sơ người dùng được đề cập ở trên làm đối số. Vì vậy, thay vì foo.barChange()
, bạn sẽ có (bar foo)
trong đó chức năng thuần túy bar
sẽ trả lại cấu trúc dữ liệu mới foo2
thay vì sửa đổi trạng thái foo
.
Điều đó được cho là một trong những lợi ích của OOP là không chỉ có nhiều ứng dụng được viết bằng mô hình này, mà quan trọng hơn là đã có nhiều thế hệ thế hệ thử nghiệm. todays phổ biến của DI container vv ...). Lập trình chức năng chưa có tính năng này. Về cơ bản không ai có một hướng dẫn cuối cùng đã được chứng minh về cách làm kiến trúc của một ứng dụng trong FP. Và bằng cách này, đây là lý do tại sao mọi người thường không được khuyến khích viết các khuôn khổ lớn và được khuyến khích ở lại với các chức năng chuyển đổi dữ liệu. Bằng cách đó bạn luôn có thể kết nối nó theo cách bạn muốn và tránh những cạm bẫy kiến trúc.