ฉันเรียนรู้เรื่องการทำความสะอาดและด้วยเหตุนี้ฉันจึงคิดใหม่อย่างมากเกี่ยวกับวิธีการออกแบบและเขียนซอฟต์แวร์
สิ่งที่ฉันยังคงต่อสู้ด้วยมีไว้สำหรับกฎเกณฑ์ทางธุรกิจเช่น "ในการอัปเดตการบันทึกบางรายการก่อนอื่นโหลดรายการทั้งหมดที่ฉันได้รับอนุญาตให้ดู / แก้ไข ฯลฯ ยืนยันว่ารายการนี้อยู่ในรายการ และหมวดหมู่รายการไม่ได้ถูกล็อกจากการใช้งาน (และกฎอื่น ๆ ฯลฯ ) ".. เนื่องจากเป็นกฎธุรกิจ (ซับซ้อน แต่ไม่ผิดปรกติ) ดังนั้นจึงควรจัดการในโดเมนแอปพลิเคชันแทนที่จะผลักดันตรรกะทางธุรกิจลงใน ชั้น db / การคงอยู่
อย่างไรก็ตามดูเหมือนว่าสำหรับฉันที่จะตรวจสอบเงื่อนไขเหล่านี้ได้อย่างมีประสิทธิภาพมันมักจะได้รับการจัดการที่ดีที่สุดกับแบบสอบถาม DB ที่สร้างขึ้นมาอย่างดีแทนที่จะโหลดข้อมูลทั้งหมดลงในโดเมนแอปพลิเคชัน ...
หากไม่มีการปรับให้เหมาะสมก่อนเวลาอันควรแนวทางที่แนะนำหรือบทความบ็อบลุงจัดการกับคำถามนี้คืออะไร หรือเขาจะพูดว่า "ตรวจสอบในโดเมนจนกว่ามันจะกลายเป็นปัญหา" ??
ฉันกำลังดิ้นรนเพื่อค้นหาตัวอย่าง / ตัวอย่างที่ดีสำหรับสิ่งอื่นใดนอกเหนือจากกรณีพื้นฐานที่สุดของการใช้งาน
ปรับปรุง:
สวัสดีทุกคนขอบคุณสำหรับการตอบกลับ ฉันควรจะชัดเจนกว่าฉันเขียนซอฟต์แวร์ (ส่วนใหญ่เป็นแอปพลิเคชันเว็บ) เป็นเวลานานและมีประสบการณ์แล้วและเห็นด้วยกับทุกหัวข้อที่คุณอธิบายร่วมกัน (ตรวจสอบโดยแบ็กเอนด์ไม่เชื่อถือข้อมูลลูกค้าโดยทั่วไป ไล่ล่าประสิทธิภาพดิบเมื่อจำเป็นเท่านั้น แต่รับทราบจุดแข็งของเครื่องมือ db เมื่อมีให้ใช้ ฯลฯ ) และได้ผ่านวงจรการเรียนรู้ของนักพัฒนาของ "โยนทั้งหมดเข้าด้วยกัน" เพื่อ "สร้างตัวควบคุมไขมันยักษ์ด้วยแอปพลิเคชัน N-tiers" และตอนนี้ชอบและตรวจสอบสไตล์ความรับผิดชอบที่สะอาด / เดี่ยว ๆ โดยทั่วไปเป็นผลมาจากโครงการไม่กี่เมื่อเร็ว ๆ นี้ที่พัฒนาไปสู่กฎเกณฑ์ทางธุรกิจที่ค่อนข้างกระจัดกระจายและมีการกระจายอย่างกว้างขวางเมื่อโครงการพัฒนาและความต้องการของลูกค้าต่อไป
โดยเฉพาะอย่างยิ่งฉันกำลังมองหาสถาปัตยกรรมสไตล์สะอาดในบริบทของการสร้าง REST apis สำหรับการใช้งานของลูกค้ารวมถึงฟังก์ชั่นการใช้งานภายในซึ่งกฎเกณฑ์ทางธุรกิจจำนวนมากอาจมีความซับซ้อนมากกว่าทุกอย่างที่คุณเห็นบนอินเทอร์เน็ต (แม้ตามสถาปัตยกรรม Clean / Hex จะมีตัวเอง)
ดังนั้นฉันเดาว่าฉันถามจริง ๆ (และล้มเหลวในการระบุอย่างชัดเจน) เกี่ยวกับวิธีการที่สะอาดและส่วนที่เหลือ api จะนั่งกันที่สิ่ง MVC ส่วนใหญ่ที่คุณเห็นวันนี้มีการตรวจสอบคำขอเข้ามา (เช่นห้องสมุด FluentValidation ใน. NET) กฎ "การตรวจสอบความถูกต้อง" ของฉันไม่มาก "นี่คือสตริงที่มีอักขระน้อยกว่า 50 ตัว" แต่มากกว่านั้น "ผู้ใช้นี้สามารถโทรหาผู้ใช้ / ผู้โต้ตอบนี้ทำการดำเนินการนี้ในการเก็บข้อมูลนี้หรือไม่ จนกระทั่งภายหลังในเดือน ฯลฯ ฯลฯ "... การตรวจสอบที่เกี่ยวข้องอย่างลึกล้ำที่มีวัตถุทางธุรกิจและกฎโดเมนจำนวนมาก
ฉันควรแยกกฎเหล่านั้นออกเป็นประเภทของตัวตรวจสอบความถูกต้องที่เฉพาะเจาะจงเพื่อติดตามผู้ใช้แต่ละคน (ซึ่งได้รับแรงบันดาลใจจากโครงการ FluentValidator แต่มีตรรกะทางธุรกิจและการเข้าถึงข้อมูลที่เกี่ยวข้องมากกว่า) ฉันควรปฏิบัติต่อการตรวจสอบเช่นเกตเวย์หรือไม่ ใส่การตรวจสอบเหล่านั้นในเกตเวย์ (ซึ่งฉันคิดว่าผิด) ฯลฯ ฯลฯ
สำหรับการอ้างอิงฉันกำลังออกบทความหลาย ๆ อย่างเช่นนี้แต่ Mattia ไม่ได้พูดถึงการตรวจสอบความถูกต้องมากนัก
แต่ฉันเดาว่าคำตอบสั้น ๆ สำหรับคำถามของฉันนั้นเหมือนกับคำตอบที่ฉันยอมรับ: "มันไม่ง่ายเลยและขึ้นอยู่กับมัน"