هل يجب أن أكون أكثر اهتمامًا بالاقتران بين الحزم أو بين وحدات التوزيع؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

لقد كنت أبحث في المقاييس ل اقتران وانظر أيضا DSM.

إحدى الأدوات التي كنت أستخدمها تبحث في الاقتران بين "الوحدات" مع كون الوحدة وحدة توزيع (في هذه الحالة تجميع .net).

أشعر أنني يجب أن أكون مهتمًا أكثر بالنظر إلى الاقتران بين الحزم (أو مساحات الأسماء) بدلاً من وحدات التوزيع.

هل يجب أن أكون أكثر اهتمامًا بالاقتران بين الحزم/مساحات الأسماء (تأكد من أن التجريدات تعتمد فقط على التجريدات، وأن الأنواع الملموسة تعتمد على التجريدات وعدم وجود دورات في التبعيات بحيث تكون إعادة البناء والتوسيع أمرًا سهلاً) أم ​​يجب أن أكون مهتمًا بما إذا كان بإمكاني ذلك نشر إصدارات جديدة دون الحاجة إلى تحديث وحدات التوزيع التي لم تتغير؟

ماذا يقيس أي شخص آخر؟

من الجدير بالذكر أن شعوري الداخلي هو أنه إذا ركزت على اقتران الحزمة/مساحة الاسم، فستأتي وحدة اقتران التوزيع مجانًا أو على الأقل ستكون أسهل.

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

المحلول

أولاً، من السهل المبالغة في النظر إلى التبعيات والاقتران.تأكد من أنك لا تبالغ في تعقيد الأمر.

مع إخلاء المسؤولية بعيدًا عن الطريق، إليك ما أقترحه.

هناك حقًا ثلاث وجهات نظر مختلفة لإدارة التبعية/الاقتران:1) البنية الجسدية (أيتبعيات التجميع) 2) بنية منطقية (أيتبعيات مساحة الاسم) 3) بنية التنفيذ (أيتبعيات الطبقة)

بالنسبة للتطبيقات الكبيرة، ستحتاج إلى فحص الثلاثة جميعًا على الأقل، ولكن يمكنك عادةً تحديد الأولويات.

بالنسبة لتطبيقات العميل المنشورة، يمكن أن يكون الرقم 1 مهمًا جدًا (أي:لأشياء مثل المكونات الإضافية).بالنسبة للتطبيقات المنشورة داخل المؤسسة (على سبيل المثال:asp.net)، عادةً ما يتبين أن العنصر رقم 1 ليس مهمًا جدًا (باستثناء الأطر المعاد استخدامها عبر تطبيقات متعددة).يمكنك عادةً نشر التطبيق بالكامل بسهولة بما يكفي حتى لا تتحمل عبء البنية المعقدة للرقم 1.

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

البند رقم 3 يتعلق حقًا بعمل تصميم جيد للفصل الدراسي.يجب على كل مطور جيد أن يبذل قدرًا كبيرًا من الجهد للتأكد من أنه يتعامل فقط مع التبعيات المناسبة في فصوله الدراسية.قول هذا أسهل من فعله، وعادةً ما يكون مهارة يجب اكتسابها بمرور الوقت.

للاقتراب قليلاً من جوهر سؤالك، يتعلق البند رقم 1 بكيفية وضع المشاريع في حل VS.لذلك هذا ليس عنصرا للقياس.إنه أكثر من شيء تقوم بإعداده في البداية ثم تتركه يعمل.العنصر رقم 2 هو شيء قد تستخدمه كأداة للتحقق أثناء عمليات الإنشاء لمعرفة ما إذا كان المطورون قد انتهكوا أي قواعد.إنه فحص أكثر من كونه إجراءً حقًا.العنصر رقم 3 هو حقًا العنصر الذي تريد إلقاء نظرة فاحصة على قياسه.سيكون العثور على الفئات الموجودة في قاعدة التعليمات البرمجية الخاصة بك والتي تحتوي على قدر كبير من أدوات الاقتران بمثابة نقاط ضعف في المستقبل، مما يضمن جودة هؤلاء الأشخاص.كما يتيح لك القياس على هذا المستوى الحصول على نظرة ثاقبة للجودة (الإجمالية) لقاعدة التعليمات البرمجية أثناء تطورها.بالإضافة إلى ذلك، يمكن أن يعطيك علامة حمراء إذا قام شخص ما بالتحقق من بعض التعليمات البرمجية البذيئة حقًا في قاعدة التعليمات البرمجية الخاصة بك.

لذا، إذا كنت تريد تحديد الأولويات، فألق نظرة سريعة على رقم 1 ورقم 2.تعرف على الشكل الذي يجب أن تبدو عليه.ولكن بالنسبة لمعظم التطبيقات، يجب أن يستغرق العنصر رقم 3 معظم الوقت.

هذه الإجابة، بالطبع، تستبعد الأطر الضخمة (مثل .NET BCL).يحتاج هؤلاء الأطفال إلى اهتمام شديد بالرقم 1.:-)

وإلا سينتهي بك الأمر بمشاكل مثل هذه:"تتضمن الإصدارات الحالية من .NET Framework مجموعة متنوعة من المكتبات المستندة إلى واجهة المستخدم الرسومية والتي قد لا تعمل بشكل صحيح في Server Core"http://www.winsupersite.com/showcase/win2008_ntk.asp

حيث لا يمكنك تشغيل .NET على تثبيت أقل من واجهة المستخدم الرسومية لنظام التشغيل Windows Server 2008 لأن إطار العمل يأخذ تبعيات على مكتبات واجهة المستخدم الرسومية...

شيء أخير.تأكد من أنك على دراية بالمبادئ الكامنة وراء الإدارة الجيدة للتبعية/الاقتران.يمكنك العثور على قائمة لطيفة هنا:

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

نصائح أخرى

تعد دورات الاقتران والتبعية بين وحدات التوزيع أكثر خطورة لأنها قد تجعل من الصعب جدًا نشر برنامجك - وأحيانًا قد تجعل من الصعب جدًا تجميع برنامجك.

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

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