ความกังวลเป็นแนวคิดที่เรียบง่าย แต่ทรงพลัง มีไว้สำหรับการใช้งานโค้ดซ้ำ โดยพื้นฐานแล้วแนวคิดคือการแยกส่วนของโค้ดทั่วไปและ / หรือบริบทเฉพาะเพื่อทำความสะอาดโมเดลและหลีกเลี่ยงไม่ให้พวกมันอ้วนเกินไปและไม่สามารถจัดการได้
ฉันต้องการระบุอย่างชัดเจนว่าคุณควรใช้เซอร์วิสอ็อบเจ็กต์เพื่อมอบฟังก์ชันการทำงานที่ไม่เกี่ยวข้องกับอ็อบเจ็กต์เฉพาะ เช่นองค์กรมีผู้ใช้จำนวนมาก ตอนนี้ผู้ดูแลระบบขององค์กรต้องการส่งออก CSV ของผู้ใช้ทั้งหมดสำหรับองค์กรนี้ รหัสนี้สามารถวางในรูปแบบองค์กรได้ แต่เนื่องจากไม่ใช่ความรับผิดชอบของออบเจ็กต์องค์กรรหัสนี้ควรวางไว้ในคลาสที่คุณส่งผ่านอ็อบเจ็กต์องค์กรและส่งคืน CSV ของผู้ใช้ทั้งหมด
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
เมื่อใดก็ตามที่คุณต้องการการสร้าง CSV คุณสามารถวางตรรกะนั้นในชั้นเรียนด้านบนได้ วิธีนี้ช่วยให้อ็อบเจ็กต์ (ในกรณีนี้คือแบบจำลององค์กร) สะอาดจากโค้ดที่ไม่ควรเป็นความรับผิดชอบ หลักการทั่วไปที่ฉันปฏิบัติตามคือ: ถ้ารหัสมันแก้ไขวัตถุตัวเองให้ย้ายรหัสไปยังวัตถุบริการ
หมายเหตุ: คำถามของคุณเกี่ยวกับข้อกังวล แต่ฉันคิดว่าจะเพิ่มสิ่งพิเศษบางอย่างที่ฉันปฏิบัติตามเพื่อรักษาฐานรหัสให้สะอาดและจัดการได้เนื่องจากอาจช่วยเพื่อนโปรแกรมเมอร์ได้ แนวทางข้างต้นนั้นเป็นที่ถกเถียงกัน