هل لدى أي شخص مقالة جيدة أو نصيحة جيدة لتسمية الفصل لتطبيقات الويب ذات المستوى n؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

أنا معتاد على التخطيط الذي يقدمه LLBLGen عندما يقوم بإنشاء كائنات بناءً على بنية قاعدة البيانات، والتي قد تولد ملفات الفئات التالية لجدول "مستخدم" محدد في قاعدة البيانات:

/EntityClasses/UserEntity.vb
/CollectionClasses/UserCollection.vb

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

 USER
 userId
 firstName
 lastName
 username
 password
 lockedOut

ماذا لو أردت قفل مستخدم؟ما هو الكود الذي ستستدعيه من طبقة العرض التقديمي؟هل يمكنك إنشاء مثيل لفئة UserEntity، والقيام بما يلي:

 User = new UserEntity(userId)
 User.lockedOut = true
 User.Save()

أو هل يمكنك إنشاء فئة جديدة، مثل UserHelper (/BusinessLogic/UserHelper.cs)، والتي قد تحتوي على وظيفة LockOutUser.سيؤدي ذلك إلى تغيير الرمز ليكون:

 UH = new UserHelper()
 UH.LockOutUser(userId)

أو هل يمكنك توسيع فئة UserEntity الأساسية وإنشاء UserEntityExt الذي يضيف الوظيفة الجديدة؟لذلك، قد يبدو الكود من طبقة العرض كما يلي:

 User = new UserEntityExt(userId)
 User.LockOutUser()

أو...هل ستفعل شيئًا آخر تمامًا؟

وماذا ستكون بنية الدليل/مساحة الاسم واصطلاحات تسمية الملف/الفئة؟

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

المحلول

أعتقد أن ما تبحث عنه هو طبقة خدمة توضع فوق كائنات المجال.لديك هذا بشكل أساسي مع خيارك الثاني على الرغم من أنني قد أسميه UserService أو UserTasks.من خلال تغليف عملية LockUser هذه في مكان واحد، سيكون من السهل تغييرها لاحقًا عندما يكون هناك المزيد من الخطوات أو كائنات المجال الأخرى المعنية.سيكون هذا أيضًا هو المكان المناسب لتنفيذ المعاملات عند التعامل مع استدعاءات قاعدة بيانات متعددة.

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