Mối quan tâm là một khái niệm đơn giản nhưng mạnh mẽ. Nó tồn tại để tái sử dụng mã. Về cơ bản, ý tưởng là trích xuất các đoạn mã phổ biến và / hoặc theo ngữ cảnh cụ thể để làm sạch các mô hình và tránh chúng trở nên quá béo và không thể quản lý được.
Tôi muốn chỉ định rõ ràng rằng bạn nên sử dụng các đối tượng dịch vụ để cung cấp chức năng không phải là mối quan tâm của đối tượng cụ thể. Ví dụ: một tổ chức có nhiều người dùng. Bây giờ, quản trị viên của tổ chức cần xuất CSV của tất cả người dùng cho tổ chức này. Mã này có thể được đặt trong mô hình tổ chức nhưng vì nó không phải là trách nhiệm của đối tượng tổ chức, mã này phải được đặt trong một lớp mà bạn chỉ cần chuyển đối tượng tổ chức và nó trả về CSV của tất cả người dùng.
class Services::GenerateCsv
def self.get_users org
#add logic the fetch users for the org and generate the CSV and return the CSV data
end
end
Bất cứ khi nào bạn cần tạo CSV, u có thể đặt logic đó trong lớp trên. Cách tiếp cận này giữ cho đối tượng (trong trường hợp này là mô hình tổ chức) sạch sẽ khỏi mã không phải là trách nhiệm của nó. Một nguyên tắc chung mà tôi tuân theo là: nếu mã đang sửa đổi đối tượng self, hãy chuyển mã sang đối tượng dịch vụ.
Lưu ý: Câu hỏi của bạn liên quan đến các mối quan tâm nhưng tôi đã nghĩ đến việc thêm một số thứ bổ sung mà tôi làm theo để giữ cho cơ sở mã sạch và dễ quản lý vì nó có thể giúp ích cho các lập trình viên. Đó là cách tiếp cận trên là tranh luận.