بوكو ضد DTO:هل من المقبول ترطيب كائن المجال جزئيًا؟

StackOverflow https://stackoverflow.com/questions/825843

  •  05-07-2019
  •  | 
  •  

سؤال

غالبًا ما يكون من الضروري عرض كائن المجال بطرق مختلفة على واجهة المستخدم؛القوائم ونتائج البحث وعرض الصفحات وتحريرها، وكذلك في الرؤوس والتذييلات والنوافذ المنبثقة.عادةً ما يكون لديك عدة "طرق عرض" مختلفة لكائن المجال، كل منها يحتوي على حقول مختلفة معروضة.

يبدو أن معظم النصائح هي استخدام DTO للحصول على البيانات عندما تحتاج إلى مجموعة فرعية أو مجموعة شاملة.هناك الكثير من النفقات العامة في صيانة DTOs.هل يعد ملء خصائص كائن المجال المطلوب لكل سيناريو طريقة سيئة؟على سبيل المثال، يمكنك استخدام ملف تعريف لتحديد الخصائص التي يجب تضمينها، على سبيل المثال:

Service.GetDomainObjects(int listID, Profile.ListProfile);Service.GetDomainObjects(string searchParam, Profile.SearchProfile);

هل كانت مفيدة؟

المحلول

بالنسبة لي، ما يأتي إليه هذا هو المكان الذي تريد أن يكون فيه الحمل الزائد، إما أنه سيكون لديك مجموعة من الفئات المختلفة لتمثيل DTOs الخاصة بك، أو سيكون لديك مجموعة من الأساليب التي تعيد كل منها نفس كائن المجال ولكن مع "ترطيب" الحقول المختلفة.

بعض الأسئلة التي أود طرحها للمساعدة في اتخاذ القرار هي:

  • ما هو مقدار النفقات العامة في ترطيب الكائن بأكمله؟هل التعقيد الإضافي (لـ DTOs أو الأجسام الرطبة جزئيًا) يستحق العناء حقًا؟
  • هل سيستخدم أي شخص آخر الكود الخاص بك؟لا ينبغي لك الخلط بين الأشخاص والأشياء الرطبة جزئيًا، فقد تكون عمليات DTO أكثر وضوحًا عندما يأتي الأشخاص للحفاظ على التعليمات البرمجية الخاصة بك.

لدي تفضيل شخصي طفيف لـ DTOs لأنني أشعر أن صيانة نظامك على المدى الطويل ستكون أسهل.إذا كنت عضوًا في فرقة فردية، أو كان هذا تطبيقًا لمرة واحدة، فيمكنني أن أتفهم تمامًا عدم رغبتك في تقديم مجموعة من الفئات الإضافية التي من شأنها أن تسبب فوضى في التعليمات البرمجية الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top