10
การแยกตรรกะทางธุรกิจและการเข้าถึงข้อมูลใน django
ฉันจะเขียนโครงการใน Django และผมเห็นว่า 80% models.pyของรหัสที่อยู่ในแฟ้ม รหัสนี้ทำให้เกิดความสับสนและหลังจากช่วงเวลาหนึ่งฉันหยุดที่จะเข้าใจสิ่งที่เกิดขึ้นจริง นี่คือสิ่งที่รบกวนจิตใจฉัน: ฉันพบว่าน่าเกลียดที่ระดับโมเดลของฉัน (ซึ่งควรจะรับผิดชอบในการทำงานกับข้อมูลจากฐานข้อมูลเท่านั้น) ก็กำลังส่งอีเมลการเดินบน API ไปยังบริการอื่น ๆ เป็นต้น นอกจากนี้ฉันพบว่าไม่สามารถวางตรรกะทางธุรกิจในมุมมองได้เนื่องจากวิธีนี้เป็นการยากที่จะควบคุม ตัวอย่างเช่นในแอปพลิเคชันของฉันมีอย่างน้อยสามวิธีในการสร้างอินสแตนซ์ใหม่ของUserแต่ในทางเทคนิคมันควรสร้างพวกเขาอย่างสม่ำเสมอ ฉันไม่ได้สังเกตเสมอเมื่อวิธีการและคุณสมบัติของแบบจำลองของฉันไม่เป็นตัวกำหนดและเมื่อพวกเขาพัฒนาผลข้างเคียง นี่คือตัวอย่างง่ายๆ ตอนแรกUserแบบจำลองเป็นแบบนี้: class User(db.Models): def get_present_name(self): return self.name or 'Anonymous' def activate(self): self.status = 'activated' self.save() เมื่อเวลาผ่านไปมันกลายเป็นสิ่งนี้: class User(db.Models): def get_present_name(self): # property became non-deterministic in terms of database # data is taken …